From ae08788c99ea77ad5a08e22fc156430b537322ac Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 18 Apr 2018 23:30:01 +0200 Subject: [PATCH 01/68] Split lcd_service_mode_show_result screens to separate functions. Make them non blocking. Remove global array distance_from_min, pass it as function return value. Make Support submenus returning to Support menu. --- Firmware/Marlin.h | 1 - Firmware/Marlin_main.cpp | 2 - Firmware/mesh_bed_calibration.cpp | 11 +-- Firmware/mesh_bed_calibration.h | 3 +- Firmware/ultralcd.cpp | 112 +++++++++++++++--------------- Firmware/ultralcd.h | 2 - 6 files changed, 65 insertions(+), 66 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index c540b13b..5767b8b2 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -343,7 +343,6 @@ extern unsigned long t_fan_rising_edge; extern bool mesh_bed_leveling_flag; extern bool mesh_bed_run_from_menu; -extern float distance_from_min[2]; extern bool sortAlpha; extern char dir_names[3][9]; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1102e111..833cea94 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -324,8 +324,6 @@ unsigned int custom_message_type; unsigned int custom_message_state; char snmm_filaments_used = 0; -float distance_from_min[2]; - bool fan_state[2]; int fan_edge_counter[2]; int fan_speed[2]; diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 266733c8..907136b6 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2960,8 +2960,8 @@ void babystep_reset() babystepLoadZ = 0; } -void count_xyz_details() { - float a1, a2; +DistanceMin count_xyz_details() { + DistanceMin distanceMin; float cntr[2] = { eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER + 0)), eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER + 4)) @@ -2974,12 +2974,15 @@ void count_xyz_details() { eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y + 0)), eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y + 4)) }; +#if 0 a2 = -1 * asin(vec_y[0] / MACHINE_AXIS_SCALE_Y); a1 = asin(vec_x[1] / MACHINE_AXIS_SCALE_X); - //angleDiff = fabs(a2 - a1); + angleDiff = fabs(a2 - a1); +#endif for (uint8_t mesh_point = 0; mesh_point < 2; ++mesh_point) { float y = vec_x[1] * pgm_read_float(bed_ref_points_4 + mesh_point * 2) + vec_y[1] * pgm_read_float(bed_ref_points_4 + mesh_point * 2 + 1) + cntr[1]; - distance_from_min[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); + distanceMin.d[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); } + return distanceMin; } diff --git a/Firmware/mesh_bed_calibration.h b/Firmware/mesh_bed_calibration.h index ced77cf6..34def34a 100644 --- a/Firmware/mesh_bed_calibration.h +++ b/Firmware/mesh_bed_calibration.h @@ -181,7 +181,8 @@ extern void babystep_undo(); // Reset the current babystep counter without moving the axes. extern void babystep_reset(); -extern void count_xyz_details(); +typedef struct{ float d[2];} DistanceMin; +extern DistanceMin count_xyz_details(); extern bool sample_z(); #endif /* MESH_BED_CALIBRATION_H */ diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a9518158..ac5d3bcf 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -222,6 +222,8 @@ static void prusa_stat_temperatures(); static void prusa_stat_printinfo(); static void lcd_farm_no(); static void lcd_menu_extruder_info(); +static void lcd_menu_xyz_y_min(); +static void lcd_menu_xyz_skew(); #if defined(TMC2130) || defined(PAT9125) static void lcd_menu_fails_stats(); #endif //TMC2130 or PAT9125 @@ -1582,7 +1584,7 @@ static void lcd_menu_extruder_info() if (lcd_clicked()) { lcd_quick_feedback(); - lcd_return_to_status(); + menu_action_back(); } } @@ -1686,7 +1688,7 @@ static void lcd_menu_debug() if (lcd_clicked()) { lcd_quick_feedback(); - lcd_return_to_status(); + menu_action_back(); } } #endif /* DEBUG_BUILD */ @@ -1703,7 +1705,7 @@ static void lcd_menu_temperatures() if (lcd_clicked()) { lcd_quick_feedback(); - lcd_return_to_status(); + menu_action_back(); } } @@ -1721,7 +1723,7 @@ static void lcd_menu_voltages() if (lcd_clicked()) { lcd_quick_feedback(); - lcd_return_to_status(); + menu_action_back(); } } #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN @@ -1733,7 +1735,7 @@ static void lcd_menu_belt_status() if (lcd_clicked()) { lcd_quick_feedback(); - lcd_return_to_status(); + menu_action_back(); } } #endif //TMC2130 @@ -1831,7 +1833,7 @@ static void lcd_support_menu() } #ifndef MK1BP MENU_ITEM(back, PSTR("------------"), 0); - if (!IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL)) MENU_ITEM(function, MSG_XYZ_DETAILS, lcd_service_mode_show_result); + if (!IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL)) MENU_ITEM(submenu, MSG_XYZ_DETAILS, lcd_menu_xyz_y_min); MENU_ITEM(submenu, MSG_INFO_EXTRUDER, lcd_menu_extruder_info); #ifdef TMC2130 @@ -2285,62 +2287,60 @@ static void lcd_move_e() } } -void lcd_service_mode_show_result() { - float angleDiff; - lcd_set_custom_characters_degree(); - count_xyz_details(); - angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW)); - lcd_update_enable(false); - lcd_implementation_clear(); - lcd_printPGM(MSG_Y_DISTANCE_FROM_MIN); - lcd_print_at_PGM(0, 1, MSG_LEFT); - lcd_print_at_PGM(0, 2, MSG_RIGHT); +static void lcd_menu_xyz_y_min() +{ + lcd.setCursor(0,0); + lcd_printPGM(MSG_Y_DISTANCE_FROM_MIN); + lcd_print_at_PGM(0, 1, PSTR("--------------------")); + lcd_print_at_PGM(0, 2, MSG_LEFT); + lcd_print_at_PGM(0, 3, MSG_RIGHT); - for (int i = 0; i < 2; i++) { - if(distance_from_min[i] < 200) { - lcd_print_at_PGM(11, i + 1, PSTR("")); - lcd.print(distance_from_min[i]); - lcd_print_at_PGM((distance_from_min[i] < 0) ? 17 : 16, i + 1, PSTR("mm")); - } else lcd_print_at_PGM(11, i + 1, PSTR("N/A")); - } - delay_keep_alive(500); - KEEPALIVE_STATE(PAUSED_FOR_USER); - while (!lcd_clicked()) { - delay_keep_alive(100); - } - delay_keep_alive(500); - lcd_implementation_clear(); - + DistanceMin distanceMin = count_xyz_details(); - lcd_printPGM(MSG_MEASURED_SKEW); - if (angleDiff < 100) { - lcd.setCursor(15, 0); - lcd.print(angleDiff * 180 / M_PI); - lcd.print(LCD_STR_DEGREE); - }else lcd_print_at_PGM(16, 0, PSTR("N/A")); - lcd_print_at_PGM(0, 1, PSTR("--------------------")); - lcd_print_at_PGM(0, 2, MSG_SLIGHT_SKEW); - lcd_print_at_PGM(15, 2, PSTR("")); - lcd.print(bed_skew_angle_mild * 180 / M_PI); - lcd.print(LCD_STR_DEGREE); - lcd_print_at_PGM(0, 3, MSG_SEVERE_SKEW); - lcd_print_at_PGM(15, 3, PSTR("")); - lcd.print(bed_skew_angle_extreme * 180 / M_PI); - lcd.print(LCD_STR_DEGREE); - delay_keep_alive(500); - while (!lcd_clicked()) { - delay_keep_alive(100); - } - KEEPALIVE_STATE(NOT_BUSY); - delay_keep_alive(500); - lcd_set_custom_characters_arrows(); - lcd_return_to_status(); - lcd_update_enable(true); - lcd_update(2); + for (int i = 0; i < 2; i++) { + if(distanceMin.d[i] < 200) { + lcd_print_at_PGM(11, i + 2, PSTR("")); + lcd.print(distanceMin.d[i]); + lcd_print_at_PGM((distanceMin.d[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); + } else lcd_print_at_PGM(11, i + 2, PSTR("N/A")); + } + if (lcd_clicked()) + { + lcd_quick_feedback(); + lcd_set_custom_characters_degree(); + lcd_goto_menu(lcd_menu_xyz_skew); + } } +static void lcd_menu_xyz_skew() +{ + float angleDiff; + angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW)); + lcd.setCursor(0,0); + lcd_printPGM(MSG_MEASURED_SKEW); + if (angleDiff < 100) { + lcd.setCursor(15, 0); + lcd.print(angleDiff * 180 / M_PI); + lcd.print(LCD_STR_DEGREE); + }else lcd_print_at_PGM(16, 0, PSTR("N/A")); + lcd_print_at_PGM(0, 1, PSTR("--------------------")); + lcd_print_at_PGM(0, 2, MSG_SLIGHT_SKEW); + lcd_print_at_PGM(15, 2, PSTR("")); + lcd.print(bed_skew_angle_mild * 180 / M_PI); + lcd.print(LCD_STR_DEGREE); + lcd_print_at_PGM(0, 3, MSG_SEVERE_SKEW); + lcd_print_at_PGM(15, 3, PSTR("")); + lcd.print(bed_skew_angle_extreme * 180 / M_PI); + lcd.print(LCD_STR_DEGREE); + if (lcd_clicked()) + { + lcd_set_custom_characters_arrows(); + lcd_quick_feedback(); + menu_action_back(); + } +} // Save a single axis babystep value. void EEPROM_save_B(int pos, int* value) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 740dd738..4107bc72 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -296,8 +296,6 @@ void lcd_temp_calibration_set(); void display_loading(); -void lcd_service_mode_show_result(); - #if !SDSORT_USES_RAM void lcd_set_degree(); void lcd_set_progress(); From d6aa149cfa37de60b8d5a50d2cee15cb1fd9a6ee Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 19 Apr 2018 00:15:08 +0200 Subject: [PATCH 02/68] Conserve 58 bytes of flash by returning by reference. --- Firmware/mesh_bed_calibration.cpp | 6 ++---- Firmware/mesh_bed_calibration.h | 4 ++-- Firmware/ultralcd.cpp | 9 +++++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 907136b6..b8296662 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2960,8 +2960,7 @@ void babystep_reset() babystepLoadZ = 0; } -DistanceMin count_xyz_details() { - DistanceMin distanceMin; +void count_xyz_details(float (&distanceMin)[2]) { float cntr[2] = { eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER + 0)), eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER + 4)) @@ -2981,8 +2980,7 @@ DistanceMin count_xyz_details() { #endif for (uint8_t mesh_point = 0; mesh_point < 2; ++mesh_point) { float y = vec_x[1] * pgm_read_float(bed_ref_points_4 + mesh_point * 2) + vec_y[1] * pgm_read_float(bed_ref_points_4 + mesh_point * 2 + 1) + cntr[1]; - distanceMin.d[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); + distanceMin[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); } - return distanceMin; } diff --git a/Firmware/mesh_bed_calibration.h b/Firmware/mesh_bed_calibration.h index 34def34a..d1fa6523 100644 --- a/Firmware/mesh_bed_calibration.h +++ b/Firmware/mesh_bed_calibration.h @@ -181,8 +181,8 @@ extern void babystep_undo(); // Reset the current babystep counter without moving the axes. extern void babystep_reset(); -typedef struct{ float d[2];} DistanceMin; -extern DistanceMin count_xyz_details(); + +extern void count_xyz_details(float (&distanceMin)[2]); extern bool sample_z(); #endif /* MESH_BED_CALIBRATION_H */ diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ac5d3bcf..32f03f80 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2295,13 +2295,14 @@ static void lcd_menu_xyz_y_min() lcd_print_at_PGM(0, 2, MSG_LEFT); lcd_print_at_PGM(0, 3, MSG_RIGHT); - DistanceMin distanceMin = count_xyz_details(); + float distanceMin[2]; + count_xyz_details(distanceMin); for (int i = 0; i < 2; i++) { - if(distanceMin.d[i] < 200) { + if(distanceMin[i] < 200) { lcd_print_at_PGM(11, i + 2, PSTR("")); - lcd.print(distanceMin.d[i]); - lcd_print_at_PGM((distanceMin.d[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); + lcd.print(distanceMin[i]); + lcd_print_at_PGM((distanceMin[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); } else lcd_print_at_PGM(11, i + 2, PSTR("N/A")); } if (lcd_clicked()) From c1dd269a9278674c50ec42e53060488a9751631b Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 19 Apr 2018 00:22:21 +0200 Subject: [PATCH 03/68] Fix missing degree symbol after returning to status screen. Those lcd_set_custom_characters* calls were redundant. --- Firmware/ultralcd.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 32f03f80..71134c30 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2308,7 +2308,6 @@ static void lcd_menu_xyz_y_min() if (lcd_clicked()) { lcd_quick_feedback(); - lcd_set_custom_characters_degree(); lcd_goto_menu(lcd_menu_xyz_skew); } } @@ -2337,7 +2336,6 @@ static void lcd_menu_xyz_skew() if (lcd_clicked()) { - lcd_set_custom_characters_arrows(); lcd_quick_feedback(); menu_action_back(); } From b6888470cfa80451e34755474b6a5b8edc02700d Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 19 Apr 2018 00:49:42 +0200 Subject: [PATCH 04/68] Save 42 bytes of flash by removing duplicate string "--------------------". --- Firmware/ultralcd.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 71134c30..08ba18ca 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -192,6 +192,8 @@ unsigned char firstrun = 1; #include "ultralcd_implementation_hitachi_HD44780.h" +static const char separator[] PROGMEM = "--------------------"; + /** forward declarations **/ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, uint8_t &nlines); @@ -2291,7 +2293,7 @@ static void lcd_menu_xyz_y_min() { lcd.setCursor(0,0); lcd_printPGM(MSG_Y_DISTANCE_FROM_MIN); - lcd_print_at_PGM(0, 1, PSTR("--------------------")); + lcd_print_at_PGM(0, 1, separator); lcd_print_at_PGM(0, 2, MSG_LEFT); lcd_print_at_PGM(0, 3, MSG_RIGHT); @@ -2324,7 +2326,7 @@ static void lcd_menu_xyz_skew() lcd.print(angleDiff * 180 / M_PI); lcd.print(LCD_STR_DEGREE); }else lcd_print_at_PGM(16, 0, PSTR("N/A")); - lcd_print_at_PGM(0, 1, PSTR("--------------------")); + lcd_print_at_PGM(0, 1, separator); lcd_print_at_PGM(0, 2, MSG_SLIGHT_SKEW); lcd_print_at_PGM(15, 2, PSTR("")); lcd.print(bed_skew_angle_mild * 180 / M_PI); @@ -7138,7 +7140,7 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo if (_step == 13) lcd_printPGM(PSTR("Calibrating home")); lcd.setCursor(0, 1); - lcd.print("--------------------"); + lcd_printPGM(separator); if ((_step >= -1) && (_step <= 1)) { //SERIAL_ECHOLNPGM("Fan test"); From 1a80fc28e8779315a2653fb206eef07729396ea5 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 19 Apr 2018 14:17:46 +0200 Subject: [PATCH 05/68] Add zero point offset information support menu. Note: XYZ menu is shown only if not printing and printer must me homed to show non-zero value. --- Firmware/language_all.cpp | 5 +++++ Firmware/language_all.h | 2 ++ Firmware/language_en.h | 1 + Firmware/ultralcd.cpp | 22 ++++++++++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 2be14ede..510d2e68 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1161,6 +1161,11 @@ const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = { MSG_MAX_EN }; +const char MSG_MEASURED_OFFSET_EN[] PROGMEM = "[0;0] point offset"; +const char * const MSG_MEASURED_OFFSET_LANG_TABLE[1] PROGMEM = { + MSG_MEASURED_OFFSET_EN +}; + const char MSG_MEASURED_SKEW_EN[] PROGMEM = "Measured skew:"; const char MSG_MEASURED_SKEW_CZ[] PROGMEM = "Merene zkoseni:"; const char * const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 992d602c..c7353d96 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -392,6 +392,8 @@ extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM]; #define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE) extern const char* const MSG_MAX_LANG_TABLE[1]; #define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0) +extern const char* const MSG_MEASURED_OFFSET_LANG_TABLE[1]; +#define MSG_MEASURED_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_MEASURED_OFFSET_LANG_TABLE, 0) extern const char* const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM]; #define MSG_MEASURED_SKEW LANG_TABLE_SELECT(MSG_MEASURED_SKEW_LANG_TABLE) extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 695546a8..9b1e86e5 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -218,6 +218,7 @@ #define(length=17,lines=1) MSG_SHOW_END_STOPS "Show end stops" #define MSG_CALIBRATE_BED "Calibrate XYZ" #define MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." +#define MSG_MEASURED_OFFSET "[0;0] point offset" #define(length=20,lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." #define(length=20,lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 08ba18ca..ec9252ab 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -226,6 +226,7 @@ static void lcd_farm_no(); static void lcd_menu_extruder_info(); static void lcd_menu_xyz_y_min(); static void lcd_menu_xyz_skew(); +static void lcd_menu_xyz_offset(); #if defined(TMC2130) || defined(PAT9125) static void lcd_menu_fails_stats(); #endif //TMC2130 or PAT9125 @@ -2336,6 +2337,27 @@ static void lcd_menu_xyz_skew() lcd.print(bed_skew_angle_extreme * 180 / M_PI); lcd.print(LCD_STR_DEGREE); + if (lcd_clicked()) + { + lcd_quick_feedback(); + lcd_goto_menu(lcd_menu_xyz_offset); + } +} + +static void lcd_menu_xyz_offset() +{ + lcd.setCursor(0,0); + lcd_printPGM(MSG_MEASURED_OFFSET); + lcd_print_at_PGM(0, 1, separator); + lcd_print_at_PGM(0, 2, PSTR("X")); + lcd_print_at_PGM(0, 3, PSTR("Y")); + + for (int i = 0; i < 2; i++) + { + lcd_print_at_PGM(11, i + 2, PSTR("")); + lcd.print(world2machine_shift[i]); + lcd_print_at_PGM((world2machine_shift[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); + } if (lcd_clicked()) { lcd_quick_feedback(); From ab68221976c3a6ac95215ac407defe4d218e328e Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 23 Apr 2018 21:23:36 +0200 Subject: [PATCH 06/68] Always show XYZ cal. details menu. --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ec9252ab..ef392677 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1836,7 +1836,7 @@ static void lcd_support_menu() } #ifndef MK1BP MENU_ITEM(back, PSTR("------------"), 0); - if (!IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL)) MENU_ITEM(submenu, MSG_XYZ_DETAILS, lcd_menu_xyz_y_min); + MENU_ITEM(submenu, MSG_XYZ_DETAILS, lcd_menu_xyz_y_min); MENU_ITEM(submenu, MSG_INFO_EXTRUDER, lcd_menu_extruder_info); #ifdef TMC2130 From f00bde09a42143a2d7810b7833662051c87be15d Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 8 May 2018 21:54:11 +0200 Subject: [PATCH 07/68] Re-factor bed calibration point coordinates to match bed CAD data. Tested successfully on MK3 (auto home position not calibrated and calibrated printer and print area position of calibrated printer). MK25 not tested. --- Firmware/mesh_bed_calibration.cpp | 35 +++++++++++++++---- .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 12 +++++-- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 266733c8..c69b4da7 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -57,13 +57,36 @@ const float bed_skew_angle_extreme = (0.25f * M_PI / 180.f); #ifdef HEATBED_V2 -// Positions of the bed reference points in the machine coordinates, referenced to the P.I.N.D.A sensor. -// The points are the following: center front, center right, center rear, center left. +/** + * [0,0] bed print area point X coordinate in bed coordinates ver. 05d/24V + */ +#define BED_PRINT_ZERO_REF_X 2.f +/** + * [0,0] bed print area point Y coordinate in bed coordinates ver. 05d/24V + */ +#define BED_PRINT_ZERO_REF_Y 9.4f + +/** + * @brief Positions of the bed reference points in print area coordinates. ver. 05d/24V + * + * Numeral constants are in bed coordinates, subtracting macro defined values converts it to print area coordinates. + * + * The points are the following: + * MK2: center front, center right, center rear, center left. + * MK25 and MK3: front left, front right, rear right, rear left + */ const float bed_ref_points_4[] PROGMEM = { - 13.f - BED_ZERO_REF_X, 10.4f - BED_ZERO_REF_Y, - 221.f - BED_ZERO_REF_X, 10.4f - BED_ZERO_REF_Y, - 221.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y, - 13.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y + 37.f - BED_PRINT_ZERO_REF_X - X_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_X, + 18.4f - BED_PRINT_ZERO_REF_Y - Y_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_Y, + + 245.f - BED_PRINT_ZERO_REF_X - X_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_X, + 18.4f - BED_PRINT_ZERO_REF_Y - Y_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_Y, + + 245.f - BED_PRINT_ZERO_REF_X - X_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_X, + 210.4f - BED_PRINT_ZERO_REF_Y - Y_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_Y, + + 37.f - BED_PRINT_ZERO_REF_X - X_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_X, + 210.4f - BED_PRINT_ZERO_REF_Y - Y_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_Y }; const float bed_ref_points[] PROGMEM = { diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index d25526a0..48b9a565 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -76,7 +76,15 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E #define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 -#define DEFAULT_Y_OFFSET 2.f // Offset of [0;0] point, when the printer is not calibrated +//#define DEFAULT_Y_OFFSET 4.f // Default distance of Y_MIN_POS point from endstop, when the printer is not calibrated. +/** + * [0,0] steel sheet print area point X coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_X 0.f +/** + * [0,0] steel sheet print area point Y coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_Y -2.f #define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203) #define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201) @@ -408,7 +416,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. #define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 3 // Z probe to nozzle Y offset: -front +behind +#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif From 59f3f9d8ec1950deca5f047d349c4335a9c972f5 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 9 May 2018 16:55:41 +0200 Subject: [PATCH 08/68] New localization - includes fixed --- Firmware/cmdqueue.h | 2 +- Firmware/mesh_bed_calibration.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/cmdqueue.h b/Firmware/cmdqueue.h index dad81c94..357e5362 100644 --- a/Firmware/cmdqueue.h +++ b/Firmware/cmdqueue.h @@ -2,7 +2,7 @@ #define CMDQUEUE_H #include "Marlin.h" -#include "language_all.h" +#include "language.h" // String circular buffer. Commands may be pushed to the buffer from both sides: diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 266733c8..6b6eea99 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -1,7 +1,7 @@ #include "Marlin.h" #include "Configuration.h" #include "ConfigurationStore.h" -#include "language_all.h" +#include "language.h" #include "mesh_bed_calibration.h" #include "mesh_bed_leveling.h" #include "stepper.h" From 2a5a7ab9d2a6fa8248f1d1a5c5f37de5bffe4f18 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 9 May 2018 17:09:57 +0200 Subject: [PATCH 09/68] Add bed calibration points macro definitions to MK25 variants. Homing and full print area printing tested on MK25. --- Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 9 +++++++++ Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index a535c27f..f1965358 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -75,6 +75,15 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E #define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 +/** + * [0,0] steel sheet print area point X coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_X 0.f +/** + * [0,0] steel sheet print area point Y coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_Y 0.f + #define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203) #define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201) diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 2879f975..558cc889 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -75,6 +75,15 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E #define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 +/** + * [0,0] steel sheet print area point X coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_X 0.f +/** + * [0,0] steel sheet print area point Y coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_Y 0.f + #define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203) #define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201) From 329ea199ec58a15acb828580928eabab2123eab2 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 10 May 2018 18:24:49 +0200 Subject: [PATCH 10/68] Show measured bed offset from expected position even if not homed. Remove redundant lcd_quick_feedback() calls. --- Firmware/mesh_bed_calibration.cpp | 153 ++++++++++++++++++------------ Firmware/mesh_bed_calibration.h | 8 +- Firmware/ultralcd.cpp | 31 +++--- 3 files changed, 113 insertions(+), 79 deletions(-) diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index b8296662..c8e839c4 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -732,19 +732,24 @@ void world2machine_reset() } /** - * @brief Set calibration matrix to default value + * @brief Get calibration matrix default value * * This is used if no valid calibration data can be read from EEPROM. + * @param [out] vec_x axis x vector + * @param [out] vec_y axis y vector + * @param [out] cntr offset vector */ -static void world2machine_default() +static void world2machine_default(float vec_x[2], float vec_y[2], float cntr[2]) { + vec_x[0] = 1.f; + vec_x[1] = 0.f; + vec_y[0] = 0.f; + vec_y[1] = 1.f; + cntr[0] = 0.f; #ifdef DEFAULT_Y_OFFSET - const float vx[] = { 1.f, 0.f }; - const float vy[] = { 0.f, 1.f }; - const float cntr[] = { 0.f, DEFAULT_Y_OFFSET }; - world2machine_update(vx, vy, cntr); + cntr[1] = DEFAULT_Y_OFFSET; #else - world2machine_reset(); + cntr[1] = 0.f; #endif } /** @@ -768,93 +773,121 @@ static inline bool vec_undef(const float v[2]) return vx[0] == 0x0FFFFFFFF || vx[1] == 0x0FFFFFFFF; } + /** - * @brief Read and apply calibration data from EEPROM + * @brief Read calibration data from EEPROM * * If no calibration data has been stored in EEPROM or invalid, * world2machine_default() is used. * * If stored calibration data is invalid, EEPROM storage is cleared. - * + * @param [out] vec_x axis x vector + * @param [out] vec_y axis y vector + * @param [out] cntr offset vector */ -void world2machine_initialize() +void world2machine_read_valid(float vec_x[2], float vec_y[2], float cntr[2]) { - //SERIAL_ECHOLNPGM("world2machine_initialize"); - float cntr[2] = { - eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER+0)), - eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER+4)) - }; - float vec_x[2] = { - eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_X +0)), - eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_X +4)) - }; - float vec_y[2] = { - eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +0)), - eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +4)) - }; + vec_x[0] = eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_X +0)); + vec_x[1] = eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_X +4)); + vec_y[0] = eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +0)); + vec_y[1] = eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +4)); + cntr[0] = eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER+0)); + cntr[1] = eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER+4)); bool reset = false; - if (vec_undef(cntr) || vec_undef(vec_x) || vec_undef(vec_y)) { -// SERIAL_ECHOLNPGM("Undefined bed correction matrix."); + if (vec_undef(cntr) || vec_undef(vec_x) || vec_undef(vec_y)) + { +#if 0 + SERIAL_ECHOLNPGM("Undefined bed correction matrix."); +#endif reset = true; } - else { + else + { // Length of the vec_x shall be close to unity. float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]); - if (l < 0.9 || l > 1.1) { -// SERIAL_ECHOLNPGM("X vector length:"); -// MYSERIAL.println(l); -// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range."); + if (l < 0.9 || l > 1.1) + { +#if 0 + SERIAL_ECHOLNPGM("X vector length:"); + MYSERIAL.println(l); + SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range."); +#endif reset = true; } // Length of the vec_y shall be close to unity. l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]); - if (l < 0.9 || l > 1.1) { -// SERIAL_ECHOLNPGM("Y vector length:"); -// MYSERIAL.println(l); -// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the Y vector out of range."); + if (l < 0.9 || l > 1.1) + { +#if 0 + SERIAL_ECHOLNPGM("Y vector length:"); + MYSERIAL.println(l); + SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the Y vector out of range."); +#endif reset = true; } // Correction of the zero point shall be reasonably small. l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]); - if (l > 15.f) { -// SERIAL_ECHOLNPGM("Zero point correction:"); -// MYSERIAL.println(l); -// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range."); + if (l > 15.f) + { +#if 0 + SERIAL_ECHOLNPGM("Zero point correction:"); + MYSERIAL.println(l); + SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range."); +#endif reset = true; } // vec_x and vec_y shall be nearly perpendicular. l = vec_x[0] * vec_y[0] + vec_x[1] * vec_y[1]; - if (fabs(l) > 0.1f) { -// SERIAL_ECHOLNPGM("Invalid bed correction matrix. X/Y axes are far from being perpendicular."); + if (fabs(l) > 0.1f) + { +#if 0 + SERIAL_ECHOLNPGM("Invalid bed correction matrix. X/Y axes are far from being perpendicular."); +#endif reset = true; } } - if (reset) { -// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Resetting to identity."); + if (reset) + { +#if 0 + SERIAL_ECHOLNPGM("Invalid bed correction matrix. Resetting to identity."); +#endif reset_bed_offset_and_skew(); - world2machine_default(); - } else { - world2machine_update(vec_x, vec_y, cntr); - /* - SERIAL_ECHOPGM("world2machine_initialize() loaded: "); - MYSERIAL.print(world2machine_rotation_and_skew[0][0], 5); - SERIAL_ECHOPGM(", "); - MYSERIAL.print(world2machine_rotation_and_skew[0][1], 5); - SERIAL_ECHOPGM(", "); - MYSERIAL.print(world2machine_rotation_and_skew[1][0], 5); - SERIAL_ECHOPGM(", "); - MYSERIAL.print(world2machine_rotation_and_skew[1][1], 5); - SERIAL_ECHOPGM(", offset "); - MYSERIAL.print(world2machine_shift[0], 5); - SERIAL_ECHOPGM(", "); - MYSERIAL.print(world2machine_shift[1], 5); - SERIAL_ECHOLNPGM(""); - */ + world2machine_default(vec_x, vec_y, cntr); } } +/** + * @brief Read and apply validated calibration data from EEPROM + */ +void world2machine_initialize() +{ +#if 0 + SERIAL_ECHOLNPGM("world2machine_initialize"); +#endif + float vec_x[2]; + float vec_y[2]; + float cntr[2]; + world2machine_read_valid(vec_x, vec_y, cntr); + world2machine_update(vec_x, vec_y, cntr); +#if 0 + SERIAL_ECHOPGM("world2machine_initialize() loaded: "); + MYSERIAL.print(world2machine_rotation_and_skew[0][0], 5); + SERIAL_ECHOPGM(", "); + MYSERIAL.print(world2machine_rotation_and_skew[0][1], 5); + SERIAL_ECHOPGM(", "); + MYSERIAL.print(world2machine_rotation_and_skew[1][0], 5); + SERIAL_ECHOPGM(", "); + MYSERIAL.print(world2machine_rotation_and_skew[1][1], 5); + SERIAL_ECHOPGM(", offset "); + MYSERIAL.print(world2machine_shift[0], 5); + SERIAL_ECHOPGM(", "); + MYSERIAL.print(world2machine_shift[1], 5); + SERIAL_ECHOLNPGM(""); +#endif +} + /** * @brief Update current position after switching to corrected coordinates * diff --git a/Firmware/mesh_bed_calibration.h b/Firmware/mesh_bed_calibration.h index d1fa6523..6d020f8c 100644 --- a/Firmware/mesh_bed_calibration.h +++ b/Firmware/mesh_bed_calibration.h @@ -26,16 +26,10 @@ extern float world2machine_rotation_and_skew_inv[2][2]; // Shift of the machine zero point, in the machine coordinates. extern float world2machine_shift[2]; -// Resets the transformation to identity. extern void world2machine_reset(); -// Resets the transformation to identity and update current_position[X,Y] from the servos. extern void world2machine_revert_to_uncorrected(); -// Loads the transformation from the EEPROM, if available. extern void world2machine_initialize(); - -// When switching from absolute to corrected coordinates, -// this will apply an inverse world2machine transformation -// to current_position[x,y]. +extern void world2machine_read_valid(float vec_x[2], float vec_y[2], float cntr[2]); extern void world2machine_update_current(); inline void world2machine(float &x, float &y) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ef392677..96b0ff83 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1586,7 +1586,6 @@ static void lcd_menu_extruder_info() if (lcd_clicked()) { - lcd_quick_feedback(); menu_action_back(); } } @@ -1707,7 +1706,6 @@ static void lcd_menu_temperatures() if (lcd_clicked()) { - lcd_quick_feedback(); menu_action_back(); } } @@ -1725,7 +1723,6 @@ static void lcd_menu_voltages() fprintf_P(lcdout, PSTR( ESC_H(1,1)"PWR: %d.%01dV"), (int)volt_pwr, (int)(10*fabs(volt_pwr - (int)volt_pwr))) ; if (lcd_clicked()) { - lcd_quick_feedback(); menu_action_back(); } } @@ -1737,7 +1734,6 @@ static void lcd_menu_belt_status() fprintf_P(lcdout, PSTR(ESC_H(1,0) "Belt status" ESC_H(2,1) "X %d" ESC_H(2,2) "Y %d" ), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y))); if (lcd_clicked()) { - lcd_quick_feedback(); menu_action_back(); } } @@ -2289,7 +2285,12 @@ static void lcd_move_e() lcd_return_to_status(); } } - +/** + * @brief Show measured Y distance of front calibration points from Y_MIN_POS + * + * If those points are detected too close to edge of reachable area, their confidence is lowered. + * This functionality is applied more often for MK2 printers. + */ static void lcd_menu_xyz_y_min() { lcd.setCursor(0,0); @@ -2310,11 +2311,12 @@ static void lcd_menu_xyz_y_min() } if (lcd_clicked()) { - lcd_quick_feedback(); lcd_goto_menu(lcd_menu_xyz_skew); } } - +/** + * @brief Show measured axis skewness + */ static void lcd_menu_xyz_skew() { float angleDiff; @@ -2339,11 +2341,12 @@ static void lcd_menu_xyz_skew() if (lcd_clicked()) { - lcd_quick_feedback(); lcd_goto_menu(lcd_menu_xyz_offset); } } - +/** + * @brief Show measured bed offset from expected position + */ static void lcd_menu_xyz_offset() { lcd.setCursor(0,0); @@ -2352,15 +2355,19 @@ static void lcd_menu_xyz_offset() lcd_print_at_PGM(0, 2, PSTR("X")); lcd_print_at_PGM(0, 3, PSTR("Y")); + float vec_x[2]; + float vec_y[2]; + float cntr[2]; + world2machine_read_valid(vec_x, vec_y, cntr); + for (int i = 0; i < 2; i++) { lcd_print_at_PGM(11, i + 2, PSTR("")); - lcd.print(world2machine_shift[i]); - lcd_print_at_PGM((world2machine_shift[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); + lcd.print(cntr[i]); + lcd_print_at_PGM((cntr[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); } if (lcd_clicked()) { - lcd_quick_feedback(); menu_action_back(); } } From c59e9bd6bec45ddd5a5c2d2ad8c96b8f9d240c4b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 15 May 2018 18:27:25 +0200 Subject: [PATCH 11/68] M860 fix: send busy messages --- Firmware/Marlin_main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 272cbcfe..a72d21c7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -6314,8 +6314,6 @@ Sigma_Exit: codenum = millis(); cancel_heatup = false; - KEEPALIVE_STATE(NOT_BUSY); - while ((!cancel_heatup) && current_temperature_pinda < setTargetPinda) { if ((millis() - codenum) > 1000) //Print Temp Reading every 1 second while waiting. { From 83aa710da6a25d33945f2d40140329298b4ae79b Mon Sep 17 00:00:00 2001 From: MRprusa3d Date: Tue, 15 May 2018 20:23:22 +0200 Subject: [PATCH 12/68] menu returns corrections Settings::FilamentSensor & FilamentAutoload removing Calibration::ShowEndStops @ MK3 --- Firmware/Marlin_main.cpp | 1 + Firmware/ultralcd.cpp | 45 ++++++++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 272cbcfe..6cd597cb 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1444,6 +1444,7 @@ void fsensor_init() { int pat9125 = pat9125_init(); printf_P(PSTR("PAT9125_init:%d\n"), pat9125); uint8_t fsensor = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR); + filament_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED); if (!pat9125) { fsensor = 0; //disable sensor diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2f5e5fe7..c5644a32 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1866,7 +1866,6 @@ void lcd_set_fan_check() { void lcd_set_filament_autoload() { filament_autoload_enabled = !filament_autoload_enabled; eeprom_update_byte((unsigned char *)EEPROM_FSENS_AUTOLOAD_ENABLED, filament_autoload_enabled); - lcd_goto_menu(lcd_settings_menu); //doesn't break menuStack } void lcd_unLoadFilament() @@ -3635,12 +3634,30 @@ static void lcd_crash_mode_info2() #ifdef PAT9125 static void lcd_filament_autoload_info() { - lcd_show_fullscreen_message_and_wait_P(MSG_AUTOLOADING_ONLY_IF_FSENS_ON); +uint8_t nlines; + lcd_update_enable(true); + static uint32_t tim = 0; + if ((tim + 1000) < millis()) + { + lcd_display_message_fullscreen_nonBlocking_P(MSG_AUTOLOADING_ONLY_IF_FSENS_ON, nlines); + tim = millis(); + } + if (lcd_clicked()) + menu_action_back(); } static void lcd_fsensor_fail() { - lcd_show_fullscreen_message_and_wait_P(MSG_FSENS_NOT_RESPONDING); +uint8_t nlines; + lcd_update_enable(true); + static uint32_t tim = 0; + if ((tim + 1000) < millis()) + { + lcd_display_message_fullscreen_nonBlocking_P(MSG_FSENS_NOT_RESPONDING, nlines); + tim = millis(); + } + if (lcd_clicked()) + menu_action_back(); } #endif //PAT9125 @@ -3712,21 +3729,15 @@ static void lcd_set_lang(unsigned char lang) { static void lcd_fsensor_state_set() { FSensorStateMenu = !FSensorStateMenu; //set also from fsensor_enable() and fsensor_disable() - if (FSensorStateMenu==0) { + if (!FSensorStateMenu) { fsensor_disable(); - if ((filament_autoload_enabled == true)){ - lcd_filament_autoload_info(); - } + if (filament_autoload_enabled) + menu_action_submenu(lcd_filament_autoload_info); }else{ fsensor_enable(); if (fsensor_not_responding) - { - lcd_fsensor_fail(); - } + menu_action_submenu(lcd_fsensor_fail); } - if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL)) lcd_goto_menu(lcd_tune_menu); - else lcd_goto_menu(lcd_settings_menu); //doesn't break menuStack - } #endif //PAT9125 @@ -4155,18 +4166,18 @@ static void lcd_settings_menu() if (fsensor_not_responding){ // Filament sensor not working MENU_ITEM(function, MSG_FSENSOR_NA, lcd_fsensor_state_set); - MENU_ITEM(function, MSG_FSENS_AUTOLOAD_NA, lcd_fsensor_fail); + MENU_ITEM(submenu, MSG_FSENS_AUTOLOAD_NA, lcd_fsensor_fail); } else{ // Filament sensor turned off, working, no problems MENU_ITEM(function, MSG_FSENSOR_OFF, lcd_fsensor_state_set); - MENU_ITEM(function, MSG_FSENS_AUTOLOAD_NA, lcd_filament_autoload_info); + MENU_ITEM(submenu, MSG_FSENS_AUTOLOAD_NA, lcd_filament_autoload_info); } } else { // Filament sensor turned on, working, no problems MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set); - if ((filament_autoload_enabled == true)) { + if (filament_autoload_enabled) { MENU_ITEM(function, MSG_FSENS_AUTOLOAD_ON, lcd_set_filament_autoload); } else { @@ -4512,7 +4523,9 @@ static void lcd_calibration_menu() #endif //MK1BP MENU_ITEM(submenu, MSG_BED_CORRECTION_MENU, lcd_adjust_bed); MENU_ITEM(submenu, MSG_PID_EXTRUDER, pid_extruder); +#ifndef TMC2130 MENU_ITEM(submenu, MSG_SHOW_END_STOPS, menu_show_end_stops); +#endif #ifndef MK1BP MENU_ITEM(gcode, MSG_CALIBRATE_BED_RESET, PSTR("M44")); #endif //MK1BP From 3eb21b65ed45d852716b0144b0f30cf54aa5ba33 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 15 May 2018 23:19:23 +0200 Subject: [PATCH 13/68] wizard fix: don't reset calibration status when repeating first layer cal. --- Firmware/ultralcd.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2f5e5fe7..f190149e 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4061,8 +4061,6 @@ void lcd_wizard(int state) { case 10: //repeat first layer cal.? wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_REPEAT_V2_CAL, false); if (wizard_event) { - //reset status and live adjust z value in eeprom - calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST); lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_CLEAN_HEATBED); state = 9; } From 503d5551e6b0a06c65ffd4293382be0157b9d1a7 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 16 May 2018 18:40:36 +0200 Subject: [PATCH 14/68] Fix build of MK2. Global variable distance_from_min was removed, do not update it. Expression float y = vec_x[1] * pgm_read_float(bed_ref_points_4+mesh_point*2) + vec_y[1] * pgm_read_float(bed_ref_points_4+mesh_point*2+1) + cntr[1]; is identical with expression in count_xyz_details(). --- Firmware/mesh_bed_calibration.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 120895a9..bca7a917 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2632,12 +2632,11 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8 // In case of success, update the too_far_mask from the calculated points. for (uint8_t mesh_point = 0; mesh_point < 2; ++ mesh_point) { float y = vec_x[1] * pgm_read_float(bed_ref_points_4+mesh_point*2) + vec_y[1] * pgm_read_float(bed_ref_points_4+mesh_point*2+1) + cntr[1]; - distance_from_min[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); #ifdef SUPPORT_VERBOSITY if (verbosity_level >= 20) { SERIAL_ECHOLNPGM(""); SERIAL_ECHOPGM("Distance from min:"); - MYSERIAL.print(distance_from_min[mesh_point]); + MYSERIAL.print(y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); SERIAL_ECHOLNPGM(""); SERIAL_ECHOPGM("y:"); MYSERIAL.print(y); From 9b7eeaecaa3ae582eec99b74aca0c9bd0f739a60 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Fri, 18 May 2018 14:42:35 +0200 Subject: [PATCH 15/68] version changed --- Firmware/Configuration.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 55615b04..bb8df381 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -7,8 +7,8 @@ #define STR(x) STR_HELPER(x) // Firmware version -#define FW_VERSION "3.2.0" -#define FW_COMMIT_NR 555 +#define FW_VERSION "3.2.1" +#define FW_COMMIT_NR 576 // FW_VERSION_UNKNOWN means this is an unofficial build. // The firmware should only be checked into github with this symbol. #define FW_DEV_VERSION FW_VERSION_UNKNOWN From 5b015907aabba38e093662e79a1f2c8dc7247b61 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 20 May 2018 13:15:46 +0200 Subject: [PATCH 16/68] New localization - macro declarations fixed --- Firmware/tmc2130.cpp | 4 ++++ Firmware/xyzcal.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/Firmware/tmc2130.cpp b/Firmware/tmc2130.cpp index 33991c07..5f5fe5aa 100644 --- a/Firmware/tmc2130.cpp +++ b/Firmware/tmc2130.cpp @@ -76,8 +76,12 @@ bool tmc2130_sg_change = false; bool skip_debug_msg = false; #define DBG(args...) printf_P(args) +#ifndef _n #define _n PSTR +#endif //_n +#ifndef _i #define _i PSTR +#endif //_i //TMC2130 registers #define TMC2130_REG_GCONF 0x00 // 17 bits diff --git a/Firmware/xyzcal.cpp b/Firmware/xyzcal.cpp index 9eb58fd9..ed3d3210 100644 --- a/Firmware/xyzcal.cpp +++ b/Firmware/xyzcal.cpp @@ -21,7 +21,9 @@ #define DBG(args...) printf_P(args) //#define DBG(args...) +#ifndef _n #define _n PSTR +#endif //_n #define _X ((int16_t)count_position[X_AXIS]) #define _Y ((int16_t)count_position[Y_AXIS]) From 476a71289324e6e8545976bff5bb8f8038ae2514 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 21 May 2018 18:40:32 +0200 Subject: [PATCH 17/68] New multilanguage support - scripts for migration --- lang_upgrade/clean.sh | 7 ++ lang_upgrade/find_msgs.sh | 63 +++++++++++++ lang_upgrade/make_en_cz.sh | 23 +++++ lang_upgrade/make_msgs.sh | 93 +++++++++++++++++++ lang_upgrade/readme.txt | 28 ++++++ lang_upgrade/replace_msgs.sh | 168 +++++++++++++++++++++++++++++++++++ 6 files changed, 382 insertions(+) create mode 100644 lang_upgrade/clean.sh create mode 100644 lang_upgrade/find_msgs.sh create mode 100644 lang_upgrade/make_en_cz.sh create mode 100644 lang_upgrade/make_msgs.sh create mode 100644 lang_upgrade/readme.txt create mode 100644 lang_upgrade/replace_msgs.sh diff --git a/lang_upgrade/clean.sh b/lang_upgrade/clean.sh new file mode 100644 index 00000000..7f767c42 --- /dev/null +++ b/lang_upgrade/clean.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# + +rm msgs*.txt +rm make_msgs.out +rm messages.h +rm messages.c diff --git a/lang_upgrade/find_msgs.sh b/lang_upgrade/find_msgs.sh new file mode 100644 index 00000000..dd5a55ec --- /dev/null +++ b/lang_upgrade/find_msgs.sh @@ -0,0 +1,63 @@ +#!/bin/sh +# +echo 'find_msgs.sh' + +files=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; ) + +echo -n ' processing msgs_en.txt ...' +#msgs=$(cat msgs_en.txt | cut -f 1 -d' ') +msgs=$(cat msgs_en.txt msgs_common.txt | cut -f 1 -d' ') +#msgs=$(cat msgs_common.txt | cut -f 1 -d' ') +echo "$msgs" | while read msg; do + echo -n "$msg " + found=$(grep -c "$msg" $files | sed "/:0$/d;s/.*:/+/g") + echo $(("0"$found)) +done | tee msgs_usage.txt_0 +cat msgs_usage.txt_0 | sort -k2 -n >msgs_usage.txt +rm msgs_usage.txt_0 +echo "finished.." +read +exit + +#replace #define(length=xx,lines=xx) +cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]*),[ \t]*lines=([0-9]*)\)[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\3 c=\1 r=\2 \4/g" >msgs_en.txt_1 +#replace #define(length=xx) +cat msgs_en.txt_1 | sed -E "s/^#define\(length=([0-9]*)\)[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\2 c=\1 r=0 \3/g" >msgs_en.txt_2 +#replace #define +cat msgs_en.txt_2 | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 c=0 r=0 \2/g" >msgs_en.txt +#remove tmp files +rm msgs_en.txt_* +echo "ok" + +echo -n ' processing language_cz.h ...' +#list all defines from language_cz.h +cat ../Firmware/language_cz.h | grep "^#define" >msgs_cz.txt_0 +cat msgs_cz.txt_0 | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" >msgs_cz.txt +#remove tmp files +rm msgs_cz.txt_* +echo "ok" + +echo "finished.." +read +exit + + + + + + +#cat msgs_en.txt_3 | grep "^XXX" >msgs_en.txt_4 + +#cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]{2}), lines=([0-9]{2})\)[ ]*([^ ]*)/\3 \2 \1/g" >msgs_en.txt_1 +#cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]{2})\)[ ]*([^ ]*)/\2 \1/g" >msgs_en.txt_1 +#cat msgs_en.txt_1 | sed -E "s/^#define[ ]*([^ ]*)/\1/g" >msgs_en.txt_2 +#[0-9]{+2} +#cat ../Firmware/language_en.h | sed "s/^#define(length=[0-9]*)//g" >msgs_en.txt_0 +#msgs=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; ) +#echo "$files" | while read fn; do +# if grep "MSG_SD_INSERTED" $fn >/dev/null; then +# echo $fn +# fi +#done +echo "finished.." +read diff --git a/lang_upgrade/make_en_cz.sh b/lang_upgrade/make_en_cz.sh new file mode 100644 index 00000000..48952ded --- /dev/null +++ b/lang_upgrade/make_en_cz.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# + +#rm lang_en_cz_0.txt +#rm lang_en_cz_1.txt +#(cat msgs_cz.txt | sed -E "s/([^ ]*) (.*)/\1% \2/g"; cat msgs_en.txt | sed -E "s/([^ ]*) ([^ ]*) ([^ ]*) (.*)/\1 \4/g") | sort > lang_en_cz_0.txt +#cat lang_en_cz_0.txt | sed -E "s/([^ %]*)[%]+ (.*)/\1 \2/g" > lang_en_cz_1.txt + +name0="" +cat lang_en_cz_1.txt | while read name text; do + if [ -z "$name0" ]; then + name0=$name + else + if [ $name==$name0 ]; then + echo $name0" OK" + else + echo $name0" NG! "$name + fi + name0='' + fi +done + +read \ No newline at end of file diff --git a/lang_upgrade/make_msgs.sh b/lang_upgrade/make_msgs.sh new file mode 100644 index 00000000..83ff13d1 --- /dev/null +++ b/lang_upgrade/make_msgs.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +echo 'make_msgs.sh' +if [ -e make_msgs.out ]; then rm make_msgs.out; fi +CUSTOM_MENDEL_NAME='Prusa i3 MK3' + +calc_charcount() +{ + #extract texts for charcount calculation + cat $1 | cut -f$2- -d' ' | sed -E "s/\" \"//g" >_txt.txt_0 + #replace printer name + cat _txt.txt_0 | sed -E "s/CUSTOM_MENDEL_NAME/\"$CUSTOM_MENDEL_NAME\"/g" >_txt.txt_1 + #replace oct chars with space + cat _txt.txt_1 | sed -E "s/\\\\[0-7]{3}/ /g" >_txt.txt_2 + #replace hex chars with space + cat _txt.txt_2 | sed -E "s/\\\\x[0-9A-Fa-f]{2}/ /g" >_txt.txt_3 + #replace \" with ' + cat _txt.txt_3 | sed -E "s/\\\\\"/'/g" >_txt.txt_4 + #replace "_white_space_" with empty sequence - strigs + cat _txt.txt_4 | sed -E "s/\"[ \t]*\"//g" >_txt.txt_5 + #replace " and white space at end of line + cat _txt.txt_5 | sed -E "s/\"[ \t]*$/\"/g" >_txt.txt_6 + #replace all " with empty sequence + cat _txt.txt_6 | sed -E "s/\"//g" >_txt.txt_7 + #calculate charcount + stat -c'%s' _txt.txt_7 + rm _txt.txt_* +} + +process_language_common() +{ + echo -n ' processing language_common.h ...' | tee -a make_msgs.out + #list all defines without '+' prefix from language_common.h + #cat ../Firmware/language_common.h | grep -E "^[+]*define" | sed "s/lenght/length/g" >msgs_common.txt_0 + cat ../Firmware/language_common.h | grep -E "^define" | sed "s/lenght/length/g" >msgs_common.txt_0 + #replace define and +define + cat msgs_common.txt_0 | sed -E "s/^[+]*define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" | sort >msgs_common.txt + #calculate msgcount + msgcount=$(grep -c '' msgs_common.txt) + #calculate charcount + charcount=$(calc_charcount msgs_common.txt 4) + #remove tmp files + rm msgs_common.txt_* + echo "ok ($msgcount messages, $charcount characters)" | tee -a make_msgs.out +} + + +process_language_en() +{ + echo -n ' processing language_en.h ...' | tee -a make_msgs.out + #list all defines from language_en.h + cat ../Firmware/language_en.h | grep "^#define" | sed "s/lenght/length/g" >msgs_en.txt_0 + #replace #define(length=xx,lines=xx) + cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]*),[ \t]*lines=([0-9]*)\)[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\3 c=\1 r=\2 \4/g" >msgs_en.txt_1 + #replace #define(length=xx) + cat msgs_en.txt_1 | sed -E "s/^#define\(length=([0-9]*)\)[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\2 c=\1 r=0 \3/g" >msgs_en.txt_2 + #replace #define + cat msgs_en.txt_2 | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 c=0 r=0 \2/g" | sort >msgs_en.txt + #calculate msgcount + msgcount=$(grep -c '' msgs_en.txt) + #calculate charcount + charcount=$(calc_charcount msgs_en.txt 4) + #remove tmp files + rm msgs_en.txt_* + echo "ok ($msgcount messages, $charcount characters)" | tee -a make_msgs.out +} + +process_language_xx() +{ + echo -n " processing language_$1.h ..." | tee -a make_msgs.out + #list all defines from language_cz.h + cat "../Firmware/language_$1.h" | grep "^#define" >"msgs_$1.txt_0" + cat "msgs_$1.txt_0" | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" | sort >"msgs_$1.txt" + #calculate msgcount + msgcount=$(grep -c '' "msgs_$1.txt") + #calculate charcount + charcount=$(calc_charcount "msgs_$1.txt" 2) + #remove tmp files + rm "msgs_$1.txt_0" + echo "ok ($msgcount messages, $charcount characters)" | tee -a make_msgs.out +} + +process_language_common +process_language_en +process_language_xx cz +process_language_xx de +process_language_xx it +process_language_xx pl +process_language_xx es + + +echo "finished.." +read diff --git a/lang_upgrade/readme.txt b/lang_upgrade/readme.txt new file mode 100644 index 00000000..7f92ed21 --- /dev/null +++ b/lang_upgrade/readme.txt @@ -0,0 +1,28 @@ +lang_upgrade - scripts for migration to new multilanguage support design + + +0. clean.sh +delete all output files + +1. make_msgs.sh +Process all language_xx.h files and extract informations to msgs_xx.txt files in simple format. +Every line in msgs_en.txt has following format: MSG_xx c=cc r=rr "text". +Every line in other msgs_xx.txt has simpler format: MSG_xx "text". +MSG_xx is original message identifier, cc is column count (originaly length) and rr is row count (originaly lines). +Output files msgs_xx.txt are sorted by message identifier (ascending order). +make_msgs.sh also reports number of messages in each language_xx.h file and total number of characters in program memory. + +2. find_msgs.sh +Find usage of each message and output listing in to file msgs_usage.txt in format: MSG_xx nn. +MSG_xx is identifier, nn is number of occurrences. Output is sorted by number of occurrences (ascending order). + +3. replace_msgs.sh +List all unused messages to file msgs_unused.txt. +Copy all source files to folder ./source +Replace all single-used messages in all ./source/*.c* files directly with the english version string constant and comment at end of line. +Generate messages.h and messages.c source files with messages used twice and more. + +4. upgrade.sh +Backup (move) all language*.h and language*.cpp files from source to folder '../backup'. +Copy folder ./source/*.* to ../Firmware, new files will be messages.h, messages.c, language.h and other source will be replaced. +After this step should be source compilable in english version, LANG_MODE in config.h is set to LANG_MODE_SINGLE. diff --git a/lang_upgrade/replace_msgs.sh b/lang_upgrade/replace_msgs.sh new file mode 100644 index 00000000..b390e6d0 --- /dev/null +++ b/lang_upgrade/replace_msgs.sh @@ -0,0 +1,168 @@ +#!/bin/sh +# replace_msgs.sh - step3 - replace source and generate messages.h and messages.c files + +#mkdir ./source +#files=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; ) +#cp $files ./source/ +#exit + +files=$(ls ./source/*.c* | grep -v 'language'; ls ./source/*.h | grep -v 'language'; ) +#echo "$files" + +#list messages used only once + #msgs=$(cat msgs_usage.txt | grep " 1$" | cut -f1 -d' ') +#make regular expression from the list - replace spaces with '\b|\b' + #msgs=$(echo $msgs | sed "s/ /\\\b\\\|\\\b/g") +#filter this messages from msgs_en.txt to msgs_en_1.txt + #cat msgs_en.txt | grep "$msgs" > msgs_en_1.txt + + + +cat msgs_en_X.txt | sed "s/\\\\/\\\\\\\\/g;s/\//\\\\\\\\\//g" | while read name cols rows text; do + comment="$name $cols $rows" + if sed -i -E "s/(.*)(\b$name\b)(.*)$/\1_i\($text\)\3\/\/\/\/$comment/g" $files; then + echo "$name OK" + else + echo "$name NG!" + fi +done | tee replace2.out + +read + +#grep "$msgs" $files > msg_.txt + +exit + + +cat msgs_en.txt | grep + +echo "$msgs" | while read name; do +# sed -i "s/\b$name\b/_i\(\"$text\"\)/g" ./source/ultralcd.cpp +done +read +exit + +# +name=MSG_INFO_NOZZLE_FAN +text="Nozzle FAN:" +#grep "\b$name\b" $files +sed -i "s/\b$name\b/_i\(\"$text\"\)/g" ./source/ultralcd.cpp +read +exit + + +#unused messages will be listed in msgs_unused.txt. +cat msgs_usage.txt | grep " 0$" | cut -f1 -d' ' >msgs_unused.txt + +#remove generated source files +if [ -e messages.h ]; then rm messages.h; fi +if [ -e messages.c ]; then rm messages.c; fi + +#messages used twice or more will be listed in messages.h and messages.cpp. +msgs=$(cat msgs_usage.txt | grep -v " 0$" | cut -f1 -d' ') +echo '//messages.h' > messages.h +echo '#include ' >> messages.h +echo '//messages.c' >> messages.c +echo '#include "messages.h"' >> messages.c +echo -n '#define bool int +' >> messages.c +echo -n '#define true 1 +' >> messages.c +echo -n '#define false 0 +' >> messages.c +echo '#include "Configuration_prusa.h"' >> messages.c + +sync -f messages.c + + +echo '//internationalized messages' | tee -a messages.h >> messages.c + +cat msgs_en.txt | sed 's/\\/\\\\/g' | while read msg cols rows text; do + if echo "$msgs" | grep "^$msg" >/dev/null; then + echo "extern const char $msg[] PROGMEM;" >> messages.h + echo "const char $msg[] PROGMEM = "$text";" >> messages.c + echo "$msg" + fi +done + +echo '//not internationalized messages' | tee -a messages.h >> messages.c + +cat msgs_common.txt | sed 's/\\/\\\\/g' | while read msg text; do + if echo "$msgs" | grep "^$msg" >/dev/null; then + echo "extern const char $msg[] PROGMEM;" >> messages.h + echo "const char $msg[] PROGMEM = "$text";" >> messages.c + echo "$msg" + fi +done + +read +exit + + + + + + + + + + + + +#messages used twice or more will be listed in messages.h and messages.cpp. +#msgs=$(cat msgs_usage.txt | grep -v " 0$" | grep -v " 1$" | cut -f1 -d' ') +msgs=$(cat msgs_usage.txt | grep -v " 0$" | cut -f1 -d' ') +echo '//messages.h' > messages.h +echo '//messages.c' > messages.c +echo '#include ' >> messages.h +echo '#include ' >> messages.c +#internationalized messages +echo '//internationalized messages' >> messages.h +echo '//internationalized messages' >> messages.c +msgs2=$(cat msgs_en.txt | while read msg cols rows text; do + if echo "$msgs" | grep "^$msg" >/dev/null; then + echo "extern const char $msg[] PROGMEM;" >> messages.h + echo "const char $msg[] PROGMEM = $text;" >> messages.c + echo $msg + fi +done) +#not internationalized messages +echo '//not internationalized messages' >> messages.h +echo '//not internationalized messages' >> messages.c +cat msgs_common.txt | while read msg text; do + if echo "$msgs" | grep "^$msg" >/dev/null; then + if echo "$msgs2" | grep "^$msg" >/dev/null; then + else + echo "extern const char $msg[] PROGMEM;" >> messages.h + echo "const char $msg[] PROGMEM = $text;" >> messages.c + echo $msg + fi + fi +done + +echo "finished..." +read +exit + +cat msgs_en.txt | while read msg cols rows text; do + if echo "$msgs" | grep "^$msg" >/dev/null; then + echo "$msg $text" + fi +done + +#; then + +# echo "" $msg +# fi +#done + +#echo "$msgs" | while read msg; do +# echo "" $msg +#done + +#msg=MSG_WIZARD_FILAMENT_LOADED +#txt="PSTR(\"Is filament loaded?\")" +#fn=../ultralcd.cpp +#sed -i "s/$msg/$txt/g" $fn + +read From 8573b65b059d16cf8d3a0f5438b3918f000197fb Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 21 May 2018 23:28:28 +0200 Subject: [PATCH 18/68] _MIN_ENDSTOP_INVERTING redefinition in variant files (constant -> define) --- Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 6 +++--- Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 6 +++--- Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 6 +++--- Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 6 +++--- Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index c95bf966..2473fde9 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -42,9 +42,9 @@ AXIS SETTINGS // Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. // Direction inverting #define INVERT_X_DIR false // for Mendel set to false, for Orca set to true diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index 538f62b0..fd9d156e 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -42,9 +42,9 @@ AXIS SETTINGS // Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. // Direction inverting #define INVERT_X_DIR false // for Mendel set to false, for Orca set to true diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index f1965358..aa1ee44f 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -38,9 +38,9 @@ #define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,133} // Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. // Direction inverting #define INVERT_X_DIR false // for Mendel set to false, for Orca set to true diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 558cc889..fac638ba 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -38,9 +38,9 @@ #define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,133} // Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. // Direction inverting #define INVERT_X_DIR false // for Mendel set to false, for Orca set to true diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 48b9a565..b82ae92f 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -39,9 +39,9 @@ //#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560} // Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING 0 // set to true to invert the logic of the endstop. // Direction inverting #define INVERT_X_DIR true // for Mendel set to false, for Orca set to true From 82af3f1a93c08b5b00ef737deb3842a8b9fac5bd Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 02:42:07 +0200 Subject: [PATCH 19/68] New ML support - upgrade scripts and source --- lang_upgrade/!upgrade.sh | 20 +++++++++ lang_upgrade/clean.sh | 8 +++- lang_upgrade/find_msgs.sh | 78 +++++++++++++-------------------- lang_upgrade/make_msgs.sh | 4 +- lang_upgrade/readme.txt | 21 +++++---- lang_upgrade/src/config.h | 27 ++++++++++++ lang_upgrade/src/language.c | 63 +++++++++++++++++++++++++++ lang_upgrade/src/language.h | 87 +++++++++++++++++++++++++++++++++++++ lang_upgrade/src/messages.c | 9 ++++ lang_upgrade/src/messages.h | 6 +++ 10 files changed, 264 insertions(+), 59 deletions(-) create mode 100644 lang_upgrade/!upgrade.sh create mode 100644 lang_upgrade/src/config.h create mode 100644 lang_upgrade/src/language.c create mode 100644 lang_upgrade/src/language.h create mode 100644 lang_upgrade/src/messages.c create mode 100644 lang_upgrade/src/messages.h diff --git a/lang_upgrade/!upgrade.sh b/lang_upgrade/!upgrade.sh new file mode 100644 index 00000000..201c235c --- /dev/null +++ b/lang_upgrade/!upgrade.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# upgrade.sh +# + +if [ -e ../lang_backup ]; then + echo 'folder ../lang_backup already exist!' +else + ./clean.sh + ./make_msgs.sh + ./find_msgs.sh + ./make_source.sh + echo 'backup old files...' + mkdir ../lang_backup + mv ../Firmware/langtool.* ../lang_backup/ + mv ../Firmware/language*.* ../lang_backup/ + echo 'copying new files...' + cp ./source/* ../Firmware/ + echo 'finished' +fi +read \ No newline at end of file diff --git a/lang_upgrade/clean.sh b/lang_upgrade/clean.sh index 7f767c42..0f1701b6 100644 --- a/lang_upgrade/clean.sh +++ b/lang_upgrade/clean.sh @@ -1,7 +1,11 @@ #!/bin/sh # +echo "removing output files" rm msgs*.txt rm make_msgs.out -rm messages.h -rm messages.c +rm replace_*.out +rm ./source/* +rmdir ./source +echo "step0 finished... press key" +read \ No newline at end of file diff --git a/lang_upgrade/find_msgs.sh b/lang_upgrade/find_msgs.sh index dd5a55ec..d3cff56a 100644 --- a/lang_upgrade/find_msgs.sh +++ b/lang_upgrade/find_msgs.sh @@ -2,62 +2,46 @@ # echo 'find_msgs.sh' +#list all source files from source folder except *language* files files=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; ) -echo -n ' processing msgs_en.txt ...' +echo ' processing msgs_en.txt and msgs_common.txt...' #msgs=$(cat msgs_en.txt | cut -f 1 -d' ') msgs=$(cat msgs_en.txt msgs_common.txt | cut -f 1 -d' ') #msgs=$(cat msgs_common.txt | cut -f 1 -d' ') echo "$msgs" | while read msg; do echo -n "$msg " - found=$(grep -c "$msg" $files | sed "/:0$/d;s/.*:/+/g") + found=$(grep -c -E "\b$msg\b" $files | sed "/:0$/d;s/.*:/+/g") echo $(("0"$found)) -done | tee msgs_usage.txt_0 +done | tee msgs_usage.txt_0 cat msgs_usage.txt_0 | sort -k2 -n >msgs_usage.txt rm msgs_usage.txt_0 -echo "finished.." + +#list messages that are not used +msgs=$(cat msgs_usage.txt | grep " 0$" | cut -f1 -d' ') +#make regular expression from the list - replace spaces with '\b|\b' (match whole words) +msgs='\b'$(echo $msgs | sed "s/ /\\\b\\\|\\\b/g")'\b' +#grep unused messages +cat msgs_en.txt | grep "$msgs" > msgs_en_unused.txt +cat msgs_common.txt | grep "$msgs" > msgs_common_unused.txt + +#list messages used once +msgs=$(cat msgs_usage.txt | grep " 1$" | cut -f1 -d' ') +#make regular expression from the list - replace spaces with '\b|\b' (match whole words) +msgs='\b'$(echo $msgs | sed "s/ /\\\b\\\|\\\b/g")'\b' +#grep unused messages +cat msgs_en.txt | grep "$msgs" > msgs_en_used_once.txt +cat msgs_common.txt | grep "$msgs" > msgs_common_used_once.txt + +#list messages used once more (exclude unused and used once) +msgs=$(cat msgs_usage.txt | grep -v " 0$" | grep -v " 1$" | cut -f1 -d' ') +#make regular expression from the list - replace spaces with '\b|\b' (match whole words) +msgs='\b'$(echo $msgs | sed "s/ /\\\b\\\|\\\b/g")'\b' +#grep unused messages +cat msgs_en.txt | grep "$msgs" > msgs_en_used_more.txt +cat msgs_common.txt | grep "$msgs" > msgs_common_used_more.txt + +echo "step2 finished... press key" + read exit - -#replace #define(length=xx,lines=xx) -cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]*),[ \t]*lines=([0-9]*)\)[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\3 c=\1 r=\2 \4/g" >msgs_en.txt_1 -#replace #define(length=xx) -cat msgs_en.txt_1 | sed -E "s/^#define\(length=([0-9]*)\)[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\2 c=\1 r=0 \3/g" >msgs_en.txt_2 -#replace #define -cat msgs_en.txt_2 | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 c=0 r=0 \2/g" >msgs_en.txt -#remove tmp files -rm msgs_en.txt_* -echo "ok" - -echo -n ' processing language_cz.h ...' -#list all defines from language_cz.h -cat ../Firmware/language_cz.h | grep "^#define" >msgs_cz.txt_0 -cat msgs_cz.txt_0 | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" >msgs_cz.txt -#remove tmp files -rm msgs_cz.txt_* -echo "ok" - -echo "finished.." -read -exit - - - - - - -#cat msgs_en.txt_3 | grep "^XXX" >msgs_en.txt_4 - -#cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]{2}), lines=([0-9]{2})\)[ ]*([^ ]*)/\3 \2 \1/g" >msgs_en.txt_1 -#cat msgs_en.txt_0 | sed -E "s/^#define\(length=([0-9]{2})\)[ ]*([^ ]*)/\2 \1/g" >msgs_en.txt_1 -#cat msgs_en.txt_1 | sed -E "s/^#define[ ]*([^ ]*)/\1/g" >msgs_en.txt_2 -#[0-9]{+2} -#cat ../Firmware/language_en.h | sed "s/^#define(length=[0-9]*)//g" >msgs_en.txt_0 -#msgs=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; ) -#echo "$files" | while read fn; do -# if grep "MSG_SD_INSERTED" $fn >/dev/null; then -# echo $fn -# fi -#done -echo "finished.." -read diff --git a/lang_upgrade/make_msgs.sh b/lang_upgrade/make_msgs.sh index 83ff13d1..b6260dc9 100644 --- a/lang_upgrade/make_msgs.sh +++ b/lang_upgrade/make_msgs.sh @@ -34,7 +34,7 @@ process_language_common() #cat ../Firmware/language_common.h | grep -E "^[+]*define" | sed "s/lenght/length/g" >msgs_common.txt_0 cat ../Firmware/language_common.h | grep -E "^define" | sed "s/lenght/length/g" >msgs_common.txt_0 #replace define and +define - cat msgs_common.txt_0 | sed -E "s/^[+]*define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" | sort >msgs_common.txt + cat msgs_common.txt_0 | sed -E "s/^[+]*define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 c=0 r=0 \2/g" | sort >msgs_common.txt #calculate msgcount msgcount=$(grep -c '' msgs_common.txt) #calculate charcount @@ -89,5 +89,5 @@ process_language_xx pl process_language_xx es -echo "finished.." +echo "step1 finished... press key" read diff --git a/lang_upgrade/readme.txt b/lang_upgrade/readme.txt index 7f92ed21..e48b265b 100644 --- a/lang_upgrade/readme.txt +++ b/lang_upgrade/readme.txt @@ -1,5 +1,11 @@ lang_upgrade - scripts for migration to new multilanguage support design +upgrade.sh - entire process: +Run scripts: clean.sh, make_msgs.sh, find_msgs.sh, make_source.sh. +Backup (move) all language*.h and language*.cpp files from source to folder '../lang_backup'. +Copy folder ./source/*.* to ../Firmware, new files will be messages.h, messages.c, language.h, language.c and other source will be replaced. +After this step should be source compilable in english version, LANG_MODE in config.h is set to 0 (primary language only) + 0. clean.sh delete all output files @@ -15,14 +21,13 @@ make_msgs.sh also reports number of messages in each language_xx.h file and tota 2. find_msgs.sh Find usage of each message and output listing in to file msgs_usage.txt in format: MSG_xx nn. MSG_xx is identifier, nn is number of occurrences. Output is sorted by number of occurrences (ascending order). +Generate filtered msgs_en.txt and msgs_common.txt files. Each file is sorted to three output files - unused, used once and used more. +Output files will be: + msgs_common_unused.txt, msgs_common_used_more.txt, msgs_common_used_once.txt + msgs_en_unused.txt, msgs_en_used_more.txt, msgs_en_used_once.txt -3. replace_msgs.sh -List all unused messages to file msgs_unused.txt. +3. make_source.sh Copy all source files to folder ./source -Replace all single-used messages in all ./source/*.c* files directly with the english version string constant and comment at end of line. +Replace all messages used once in all ./source/*.c* files directly with the english version string constant and comment at end of line. Generate messages.h and messages.c source files with messages used twice and more. - -4. upgrade.sh -Backup (move) all language*.h and language*.cpp files from source to folder '../backup'. -Copy folder ./source/*.* to ../Firmware, new files will be messages.h, messages.c, language.h and other source will be replaced. -After this step should be source compilable in english version, LANG_MODE in config.h is set to LANG_MODE_SINGLE. +Replace line '' in Marlin_main.cpp with comment. diff --git a/lang_upgrade/src/config.h b/lang_upgrade/src/config.h new file mode 100644 index 00000000..1a2b1ebd --- /dev/null +++ b/lang_upgrade/src/config.h @@ -0,0 +1,27 @@ +#ifndef _CONFIG_H +#define _CONFIG_H + + +//ADC configuration +#define ADC_CHAN_MSK 0b0000001001011111 //used AD channels bit mask (0,1,2,3,4,6,9) +#define ADC_CHAN_CNT 7 //number of used channels) +#define ADC_OVRSAMPL 16 //oversampling multiplier +#define ADC_CALLBACK adc_ready //callback function () + +//SM4 configuration +#define SM4_DEFDELAY 500 //default step delay [us] + +//TMC2130 - Trinamic stepper driver +//pinout - hardcoded +//spi: +#define TMC2130_SPI_RATE 0 // fosc/4 = 4MHz +#define TMC2130_SPCR SPI_SPCR(TMC2130_SPI_RATE, 1, 1, 1, 0) +#define TMC2130_SPSR SPI_SPSR(TMC2130_SPI_RATE) + +//LANG - Multi-language support +#define LANG_MODE 0 // primary language only +//#define LANG_MODE 1 // sec. language support +#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12kb) + + +#endif //_CONFIG_H diff --git a/lang_upgrade/src/language.c b/lang_upgrade/src/language.c new file mode 100644 index 00000000..d992b87e --- /dev/null +++ b/lang_upgrade/src/language.c @@ -0,0 +1,63 @@ +//language.c +#include "language.h" +#include +#include + + +// Currectly active language selection. +unsigned char lang_selected = 0; + +#if (LANG_MODE == 0) //primary language only +#else //(LANG_MODE == 0) +//reserved xx kbytes for secondary language table +static const char _SEC_LANG[LANG_SIZE_RESERVED] PROGMEM_I2 = "_SEC_LANG"; +#endif //(LANG_MODE == 0) + +//lang_table_t structure - 16byte header +typedef struct +{ + struct + { + uint32_t magic; + uint16_t size; + uint16_t count; + uint16_t checksum; + uint16_t reserved0; + uint32_t reserved1; + } header; + uint16_t table[]; +} lang_table_t; + +//lang_table pointer +lang_table_t* lang_table = 0; + + +const char* lang_get_translation(const char* s) +{ + if (lang_selected == 0) return s + 2; //primary language selected + if (lang_table == 0) return s + 2; //sec. lang table not found + uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id + if (ui == 0xffff) return s + 2; //translation not found + ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset + return (const char*)((char*)lang_table + ui + 16); //return calculated pointer +} + +const char* lang_select(unsigned char lang) +{ +#if (LANG_MODE == 0) //primary language only + return 0; +#else //(LANG_MODE == 0) + if (lang == 0) //primary language + { + lang_table = 0; + lang_selected = 0; + return; + } + uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space + ui += 0x0100; //add 1 page + ui &= 0xff00; //align to page + lang_table = ui; //set table pointer + ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16)))); //read relative offset of first string (language name) + return (const char*)((char*)lang_table + ui + 16); //return calculated pointer +#endif //(LANG_MODE == 0) +} \ No newline at end of file diff --git a/lang_upgrade/src/language.h b/lang_upgrade/src/language.h new file mode 100644 index 00000000..add874d6 --- /dev/null +++ b/lang_upgrade/src/language.h @@ -0,0 +1,87 @@ +//language.h +#ifndef LANGUAGE_H +#define LANGUAGE_H + +#include "config.h" + +#define PROTOCOL_VERSION "1.0" + +#ifdef CUSTOM_MENDEL_NAME + // #define CUSTOM_MENDEL_NAME CUSTOM_MENDEL_NAME +#else + #define MACHINE_NAME "Mendel" +#endif + +#ifndef MACHINE_UUID + #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" +#endif + +#define MSG_FW_VERSION "Firmware" + +#define STRINGIFY_(n) #n +#define STRINGIFY(n) STRINGIFY_(n) + +#if (LANG_MODE == 0) +//#define _i PSTR +//#define _I(s) (__extension__({static const char __c[] __attribute__((section("Txt_i"))) = s; &__c[0];})) +#endif //(LANG_MODE == 0) + +//section progmem0 will be used for localized translated strings +#define PROGMEM_I2 __attribute__((section(".progmem0"))) +//section progmem1 will be used for localized strings in english +#define PROGMEM_I1 __attribute__((section(".progmem1"))) +//section progmem2 will be used for not localized strings in english +#define PROGMEM_N1 __attribute__((section(".progmem2"))) + +#if (LANG_MODE == 0) //primary language only +#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = s; &__c[0];})) +#define ISTR(s) s +#define _i(s) _I(s) +#define _T(s) s +#else //(LANG_MODE == 0) +#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff"s; &__c[0];})) +#define ISTR(s) "\xff\xff"s +#define _i(s) lang_get_translation(_I(s)) +#define _T(s) lang_get_translation(s) +#endif //(LANG_MODE == 0) +#define _N(s) (__extension__({static const char __c[] PROGMEM_N1 = s; &__c[0];})) +#define _n(s) _N(s) + + +// Language indices into their particular symbol tables. +#define LANG_ID_EN 0 +#define LANG_ID_CZ 1 +// Language is not defined and it shall be selected from the menu. +#define LANG_ID_FORCE_SELECTION 254 +// Language is not defined on a virgin RAMBo board. +#define LANG_ID_UNDEFINED 255 + +// Default language ID, if no language is selected. +#define LANG_ID_DEFAULT LANG_ID_CZ + +// Number of languages available in the language table. +#define LANG_NUM 2 + + +#if defined(__cplusplus) +extern "C" { +#endif //defined(__cplusplus) + +// Currectly active language selection. +extern unsigned char lang_selected; + +extern const char* lang_get_translation(const char* s); +extern const char* lang_select(unsigned char lang); + +#if defined(__cplusplus) +} +#endif //defined(__cplusplus) + +#define CAT2(_s1, _s2) _s1 +#define CAT4(_s1, _s2, _s3, _s4) _s1 +#define MSG_LANGUAGE_NAME_EXPLICIT(i) ((i==0)?PSTR("ENG"):PSTR("CZE")) + +#include "messages.h" + +#endif //__LANGUAGE_H + diff --git a/lang_upgrade/src/messages.c b/lang_upgrade/src/messages.c new file mode 100644 index 00000000..5b7915ff --- /dev/null +++ b/lang_upgrade/src/messages.c @@ -0,0 +1,9 @@ +//messages.c +#include "language.h" + +//this is because we need include Configuration_prusa.h (CUSTOM_MENDEL_NAME) +#define bool char +#define true 1 +#define false 0 +#include "Configuration_prusa.h" + diff --git a/lang_upgrade/src/messages.h b/lang_upgrade/src/messages.h new file mode 100644 index 00000000..f0d9b263 --- /dev/null +++ b/lang_upgrade/src/messages.h @@ -0,0 +1,6 @@ +//messages.h + +// Common serial messages +#define MSG_MARLIN "Marlin" + +// LCD Menu Messages From 67359f8092423a294e0d642ab8e93e73febdd9c5 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 02:54:54 +0200 Subject: [PATCH 20/68] removed file --- lang_upgrade/replace_msgs.sh | 168 ----------------------------------- 1 file changed, 168 deletions(-) delete mode 100644 lang_upgrade/replace_msgs.sh diff --git a/lang_upgrade/replace_msgs.sh b/lang_upgrade/replace_msgs.sh deleted file mode 100644 index b390e6d0..00000000 --- a/lang_upgrade/replace_msgs.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/sh -# replace_msgs.sh - step3 - replace source and generate messages.h and messages.c files - -#mkdir ./source -#files=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; ) -#cp $files ./source/ -#exit - -files=$(ls ./source/*.c* | grep -v 'language'; ls ./source/*.h | grep -v 'language'; ) -#echo "$files" - -#list messages used only once - #msgs=$(cat msgs_usage.txt | grep " 1$" | cut -f1 -d' ') -#make regular expression from the list - replace spaces with '\b|\b' - #msgs=$(echo $msgs | sed "s/ /\\\b\\\|\\\b/g") -#filter this messages from msgs_en.txt to msgs_en_1.txt - #cat msgs_en.txt | grep "$msgs" > msgs_en_1.txt - - - -cat msgs_en_X.txt | sed "s/\\\\/\\\\\\\\/g;s/\//\\\\\\\\\//g" | while read name cols rows text; do - comment="$name $cols $rows" - if sed -i -E "s/(.*)(\b$name\b)(.*)$/\1_i\($text\)\3\/\/\/\/$comment/g" $files; then - echo "$name OK" - else - echo "$name NG!" - fi -done | tee replace2.out - -read - -#grep "$msgs" $files > msg_.txt - -exit - - -cat msgs_en.txt | grep - -echo "$msgs" | while read name; do -# sed -i "s/\b$name\b/_i\(\"$text\"\)/g" ./source/ultralcd.cpp -done -read -exit - -# -name=MSG_INFO_NOZZLE_FAN -text="Nozzle FAN:" -#grep "\b$name\b" $files -sed -i "s/\b$name\b/_i\(\"$text\"\)/g" ./source/ultralcd.cpp -read -exit - - -#unused messages will be listed in msgs_unused.txt. -cat msgs_usage.txt | grep " 0$" | cut -f1 -d' ' >msgs_unused.txt - -#remove generated source files -if [ -e messages.h ]; then rm messages.h; fi -if [ -e messages.c ]; then rm messages.c; fi - -#messages used twice or more will be listed in messages.h and messages.cpp. -msgs=$(cat msgs_usage.txt | grep -v " 0$" | cut -f1 -d' ') -echo '//messages.h' > messages.h -echo '#include ' >> messages.h -echo '//messages.c' >> messages.c -echo '#include "messages.h"' >> messages.c -echo -n '#define bool int -' >> messages.c -echo -n '#define true 1 -' >> messages.c -echo -n '#define false 0 -' >> messages.c -echo '#include "Configuration_prusa.h"' >> messages.c - -sync -f messages.c - - -echo '//internationalized messages' | tee -a messages.h >> messages.c - -cat msgs_en.txt | sed 's/\\/\\\\/g' | while read msg cols rows text; do - if echo "$msgs" | grep "^$msg" >/dev/null; then - echo "extern const char $msg[] PROGMEM;" >> messages.h - echo "const char $msg[] PROGMEM = "$text";" >> messages.c - echo "$msg" - fi -done - -echo '//not internationalized messages' | tee -a messages.h >> messages.c - -cat msgs_common.txt | sed 's/\\/\\\\/g' | while read msg text; do - if echo "$msgs" | grep "^$msg" >/dev/null; then - echo "extern const char $msg[] PROGMEM;" >> messages.h - echo "const char $msg[] PROGMEM = "$text";" >> messages.c - echo "$msg" - fi -done - -read -exit - - - - - - - - - - - - -#messages used twice or more will be listed in messages.h and messages.cpp. -#msgs=$(cat msgs_usage.txt | grep -v " 0$" | grep -v " 1$" | cut -f1 -d' ') -msgs=$(cat msgs_usage.txt | grep -v " 0$" | cut -f1 -d' ') -echo '//messages.h' > messages.h -echo '//messages.c' > messages.c -echo '#include ' >> messages.h -echo '#include ' >> messages.c -#internationalized messages -echo '//internationalized messages' >> messages.h -echo '//internationalized messages' >> messages.c -msgs2=$(cat msgs_en.txt | while read msg cols rows text; do - if echo "$msgs" | grep "^$msg" >/dev/null; then - echo "extern const char $msg[] PROGMEM;" >> messages.h - echo "const char $msg[] PROGMEM = $text;" >> messages.c - echo $msg - fi -done) -#not internationalized messages -echo '//not internationalized messages' >> messages.h -echo '//not internationalized messages' >> messages.c -cat msgs_common.txt | while read msg text; do - if echo "$msgs" | grep "^$msg" >/dev/null; then - if echo "$msgs2" | grep "^$msg" >/dev/null; then - else - echo "extern const char $msg[] PROGMEM;" >> messages.h - echo "const char $msg[] PROGMEM = $text;" >> messages.c - echo $msg - fi - fi -done - -echo "finished..." -read -exit - -cat msgs_en.txt | while read msg cols rows text; do - if echo "$msgs" | grep "^$msg" >/dev/null; then - echo "$msg $text" - fi -done - -#; then - -# echo "" $msg -# fi -#done - -#echo "$msgs" | while read msg; do -# echo "" $msg -#done - -#msg=MSG_WIZARD_FILAMENT_LOADED -#txt="PSTR(\"Is filament loaded?\")" -#fn=../ultralcd.cpp -#sed -i "s/$msg/$txt/g" $fn - -read From e783ceb95e74e7f3ed89fb026cc24c0c97e81697 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 02:55:43 +0200 Subject: [PATCH 21/68] removed file --- lang_upgrade/make_en_cz.sh | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 lang_upgrade/make_en_cz.sh diff --git a/lang_upgrade/make_en_cz.sh b/lang_upgrade/make_en_cz.sh deleted file mode 100644 index 48952ded..00000000 --- a/lang_upgrade/make_en_cz.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# - -#rm lang_en_cz_0.txt -#rm lang_en_cz_1.txt -#(cat msgs_cz.txt | sed -E "s/([^ ]*) (.*)/\1% \2/g"; cat msgs_en.txt | sed -E "s/([^ ]*) ([^ ]*) ([^ ]*) (.*)/\1 \4/g") | sort > lang_en_cz_0.txt -#cat lang_en_cz_0.txt | sed -E "s/([^ %]*)[%]+ (.*)/\1 \2/g" > lang_en_cz_1.txt - -name0="" -cat lang_en_cz_1.txt | while read name text; do - if [ -z "$name0" ]; then - name0=$name - else - if [ $name==$name0 ]; then - echo $name0" OK" - else - echo $name0" NG! "$name - fi - name0='' - fi -done - -read \ No newline at end of file From 4e14c2cdae04352d44bc6738e1e6e9adc9939a51 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 03:08:05 +0200 Subject: [PATCH 22/68] Upgrade script make_source.sh --- lang_upgrade/make_source.sh | 75 +++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 lang_upgrade/make_source.sh diff --git a/lang_upgrade/make_source.sh b/lang_upgrade/make_source.sh new file mode 100644 index 00000000..cf4b7fa9 --- /dev/null +++ b/lang_upgrade/make_source.sh @@ -0,0 +1,75 @@ +#!/bin/sh +# make_source.sh - step3 - replace old source files and generate new + + +if [ -e ./source ]; then + echo 'folder ./source already exists.' + read + exit +fi + +#create target folder +echo 'creating target folder...' +mkdir ./source +#list all source files except *language* +files=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language' ) +#copy original source files to target folder +echo 'copying files...' +cp $files ./source/ +#list all source files in target folder +files=$(ls ./source/*.c*; ls ./source/*.h ) + +#replace source - internatinalized messages used once with _i("TEXT") +echo 'processing msgs_en_used_once.txt' +cat msgs_en_used_once.txt | sed "s/\\\\/\\\\\\\\/g;s/\//\\\\\\\\\//g" | while read name cols rows text; do + comment="$name $cols $rows" + if sed -i -E "s/(.*)(\b$name\b)(.*)$/\1_i\($text\)\3\/\/\/\/$comment/g" $files; then + echo "$name OK" + else + echo "$name NG!" + fi +done | tee replace_en.out + +#replace source - not internatinalized messages used once with _n("TEXT") +echo 'processing msgs_common_used_once.txt' +cat msgs_common_used_once.txt | sed "s/\\\\/\\\\\\\\/g;s/\//\\\\\\\\\//g" | while read name cols rows text; do + comment="$name $cols $rows" + if sed -i -E "s/(.*)(\b$name\b)(.*)$/\1_n\($text\)\3\/\/\/\/$comment/g" $files; then + echo "$name OK" + else + echo "$name NG!" + fi +done | tee replace_common.out + +#messages used twice or more will be listed in messages.h and messages.c. +cp ./src/messages.h ./source/ +cp ./src/messages.c ./source/ + +echo '//internationalized messages' | tee -a ./source/messages.h >> ./source/messages.c +cat msgs_en_used_more.txt | sed 's/\\/\\\\/g' | while read msg cols rows text; do + comment="$cols $rows" + echo "extern const char $msg[];" >> ./source/messages.h + echo "const char $msg[] PROGMEM_I1 = ISTR("$text"); ////$comment" >> ./source/messages.c + echo "$msg" +done + +echo '//not internationalized messages' | tee -a ./source/messages.h >> ./source/messages.c +cat msgs_common_used_more.txt | sed 's/\\/\\\\/g' | while read msg cols rows text; do + comment="$cols $rows" + echo "extern const char $msg[];" >> ./source/messages.h + echo "const char $msg[] PROGMEM_N1 = "$text"; ////$comment" >> ./source/messages.c + echo "$msg" +done + + +#copy new source files +cp ./src/language.h ./source/ +cp ./src/language.c ./source/ +cp ./src/config.h ./source/ + +#replace line with declaration in Marlin_main.cpp +sed -i -E "s/^(unsigned char lang_selected = 0;)/\/\/\1/" ./source/Marlin_main.cpp + +echo "step3 finished... press key" +read +exit From bb01e20ad65b73095f6d3e764c7bf12ed866be4b Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 03:15:50 +0200 Subject: [PATCH 23/68] New ML support - migration - generated files --- lang_upgrade/make_msgs.out | 7 + lang_upgrade/msgs_common.txt | 26 ++ lang_upgrade/msgs_common_unused.txt | 0 lang_upgrade/msgs_common_used_more.txt | 13 + lang_upgrade/msgs_common_used_once.txt | 13 + lang_upgrade/msgs_cz.txt | 365 ++++++++++++++++++++++ lang_upgrade/msgs_de.txt | 67 +++++ lang_upgrade/msgs_en.txt | 373 +++++++++++++++++++++++ lang_upgrade/msgs_en_unused.txt | 30 ++ lang_upgrade/msgs_en_used_more.txt | 96 ++++++ lang_upgrade/msgs_en_used_once.txt | 247 +++++++++++++++ lang_upgrade/msgs_es.txt | 289 ++++++++++++++++++ lang_upgrade/msgs_it.txt | 294 ++++++++++++++++++ lang_upgrade/msgs_pl.txt | 295 ++++++++++++++++++ lang_upgrade/msgs_usage.txt | 399 +++++++++++++++++++++++++ lang_upgrade/replace_common.out | 13 + lang_upgrade/replace_en.out | 247 +++++++++++++++ 17 files changed, 2774 insertions(+) create mode 100644 lang_upgrade/make_msgs.out create mode 100644 lang_upgrade/msgs_common.txt create mode 100644 lang_upgrade/msgs_common_unused.txt create mode 100644 lang_upgrade/msgs_common_used_more.txt create mode 100644 lang_upgrade/msgs_common_used_once.txt create mode 100644 lang_upgrade/msgs_cz.txt create mode 100644 lang_upgrade/msgs_de.txt create mode 100644 lang_upgrade/msgs_en.txt create mode 100644 lang_upgrade/msgs_en_unused.txt create mode 100644 lang_upgrade/msgs_en_used_more.txt create mode 100644 lang_upgrade/msgs_en_used_once.txt create mode 100644 lang_upgrade/msgs_es.txt create mode 100644 lang_upgrade/msgs_it.txt create mode 100644 lang_upgrade/msgs_pl.txt create mode 100644 lang_upgrade/msgs_usage.txt create mode 100644 lang_upgrade/replace_common.out create mode 100644 lang_upgrade/replace_en.out diff --git a/lang_upgrade/make_msgs.out b/lang_upgrade/make_msgs.out new file mode 100644 index 00000000..579434eb --- /dev/null +++ b/lang_upgrade/make_msgs.out @@ -0,0 +1,7 @@ + processing language_common.h ...ok (26 messages, 410 characters) + processing language_en.h ...ok (373 messages, 9704 characters) + processing language_cz.h ...ok (365 messages, 9639 characters) + processing language_de.h ...ok (67 messages, 2352 characters) + processing language_it.h ...ok (294 messages, 7808 characters) + processing language_pl.h ...ok (295 messages, 7308 characters) + processing language_es.h ...ok (289 messages, 7516 characters) diff --git a/lang_upgrade/msgs_common.txt b/lang_upgrade/msgs_common.txt new file mode 100644 index 00000000..f2eb1116 --- /dev/null +++ b/lang_upgrade/msgs_common.txt @@ -0,0 +1,26 @@ +MSG_ACTIVE_EXTRUDER c=0 r=0 "Active Extruder: " +MSG_AUTHOR c=0 r=0 " | Author: " +MSG_BROWNOUT_RESET c=0 r=0 " Brown out Reset" +MSG_COUNT_X c=0 r=0 " Count X: " +MSG_ERR_LINE_NO c=0 r=0 "Line Number is not Last Line Number+1, Last Line: " +MSG_ERR_LONG_EXTRUDE_STOP c=0 r=0 " too long extrusion prevented" +MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM c=0 r=0 "No Line Number with checksum, Last Line: " +MSG_EXTERNAL_RESET c=0 r=0 " External Reset" +MSG_FILE_PRINTED c=0 r=0 "Done printing file" +MSG_FILE_SAVED c=0 r=0 "Done saving file." +MSG_INVALID_EXTRUDER c=0 r=0 "Invalid extruder" +MSG_OFF c=0 r=0 "Off" +MSG_ON c=0 r=0 "On " +MSG_POSITION_UNKNOWN c=0 r=0 "Home X/Y before Z" +MSG_SD_SIZE c=0 r=0 " Size: " +MSG_SOFTWARE_RESET c=0 r=0 " Software Reset" +MSG_UNKNOWN_COMMAND c=0 r=0 "Unknown command: \"" +MSG_WATCHDOG_RESET c=0 r=0 " Watchdog Reset" +MSG_X_MAX c=0 r=0 "x_max: " +MSG_X_MIN c=0 r=0 "x_min: " +MSG_Y_MAX c=0 r=0 "y_max: " +MSG_Y_MIN c=0 r=0 "y_min: " +MSG_Z_MAX c=0 r=0 "z_max: " +MSG_Z_MIN c=0 r=0 "z_min: " +MSG_ZPROBE_OUT c=0 r=0 "Z probe out. bed" +MSG_ZPROBE_ZOFFSET c=0 r=0 "Z Offset" diff --git a/lang_upgrade/msgs_common_unused.txt b/lang_upgrade/msgs_common_unused.txt new file mode 100644 index 00000000..e69de29b diff --git a/lang_upgrade/msgs_common_used_more.txt b/lang_upgrade/msgs_common_used_more.txt new file mode 100644 index 00000000..ab442544 --- /dev/null +++ b/lang_upgrade/msgs_common_used_more.txt @@ -0,0 +1,13 @@ +MSG_BROWNOUT_RESET c=0 r=0 " Brown out Reset" +MSG_EXTERNAL_RESET c=0 r=0 " External Reset" +MSG_FILE_SAVED c=0 r=0 "Done saving file." +MSG_OFF c=0 r=0 "Off" +MSG_ON c=0 r=0 "On " +MSG_POSITION_UNKNOWN c=0 r=0 "Home X/Y before Z" +MSG_SOFTWARE_RESET c=0 r=0 " Software Reset" +MSG_UNKNOWN_COMMAND c=0 r=0 "Unknown command: \"" +MSG_WATCHDOG_RESET c=0 r=0 " Watchdog Reset" +MSG_Z_MAX c=0 r=0 "z_max: " +MSG_Z_MIN c=0 r=0 "z_min: " +MSG_ZPROBE_OUT c=0 r=0 "Z probe out. bed" +MSG_ZPROBE_ZOFFSET c=0 r=0 "Z Offset" diff --git a/lang_upgrade/msgs_common_used_once.txt b/lang_upgrade/msgs_common_used_once.txt new file mode 100644 index 00000000..d7c99e72 --- /dev/null +++ b/lang_upgrade/msgs_common_used_once.txt @@ -0,0 +1,13 @@ +MSG_ACTIVE_EXTRUDER c=0 r=0 "Active Extruder: " +MSG_AUTHOR c=0 r=0 " | Author: " +MSG_COUNT_X c=0 r=0 " Count X: " +MSG_ERR_LINE_NO c=0 r=0 "Line Number is not Last Line Number+1, Last Line: " +MSG_ERR_LONG_EXTRUDE_STOP c=0 r=0 " too long extrusion prevented" +MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM c=0 r=0 "No Line Number with checksum, Last Line: " +MSG_FILE_PRINTED c=0 r=0 "Done printing file" +MSG_INVALID_EXTRUDER c=0 r=0 "Invalid extruder" +MSG_SD_SIZE c=0 r=0 " Size: " +MSG_X_MAX c=0 r=0 "x_max: " +MSG_X_MIN c=0 r=0 "x_min: " +MSG_Y_MAX c=0 r=0 "y_max: " +MSG_Y_MIN c=0 r=0 "y_min: " diff --git a/lang_upgrade/msgs_cz.txt b/lang_upgrade/msgs_cz.txt new file mode 100644 index 00000000..6e6b543a --- /dev/null +++ b/lang_upgrade/msgs_cz.txt @@ -0,0 +1,365 @@ +MSG_ADJUSTZ "Auto doladit Z ?" +MSG_ALL "Vse" +MSG_AUTO_HOME "Auto home" +MSG_AUTO_MODE_ON "Mod [automaticky]" +MSG_AUTOLOAD_FILAMENT "AutoZavedeni fil." +MSG_AUTOLOADING_ENABLED "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..." +MSG_AUTOLOADING_ONLY_IF_FSENS_ON "Automaticke zavadeni filamentu dostupne pouze pri zapnutem filament senzoru..." +MSG_BABYSTEP_X "Babystep X" +MSG_BABYSTEP_Y "Babystep Y" +MSG_BABYSTEP_Z "Doladeni osy Z" +MSG_BABYSTEP_Z_NOT_SET "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy." +MSG_BABYSTEPPING_X "Babystepping X" +MSG_BABYSTEPPING_Y "Babystepping Y" +MSG_BABYSTEPPING_Z "Dostavovani Z" +MSG_BED "Bed" +MSG_BED_CORRECTION_FRONT "Vpredu [um]" +MSG_BED_CORRECTION_LEFT "Vlevo [um]" +MSG_BED_CORRECTION_MENU "Korekce podlozky" +MSG_BED_CORRECTION_REAR "Vzadu [um]" +MSG_BED_CORRECTION_RESET "Reset" +MSG_BED_CORRECTION_RIGHT "Vpravo [um]" +MSG_BED_DONE "Bed OK." +MSG_BED_HEATING "Zahrivani bed" +MSG_BED_HEATING_SAFETY_DISABLED "Zahrivani preruseno bezpecnostnim casovacem." +MSG_BED_LEVELING_FAILED_POINT_HIGH "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset." +MSG_BED_LEVELING_FAILED_POINT_LOW "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset." +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibrace XYZ selhala. Nahlednete do manualu." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!" +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "Kalibrace XYZ nepresna. Levy predni bod moc vpredu." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu." +MSG_BEGIN_FILE_LIST "Begin file list" +MSG_CALIBRATE_BED "Kalibrace XYZ" +MSG_CALIBRATE_BED_RESET "Reset XYZ kalibr." +MSG_CALIBRATE_E "Kalibrovat E" +MSG_CALIBRATE_PINDA "Zkalibrovat" +MSG_CALIBRATE_Z_AUTO "Kalibruji Z" +MSG_CALIBRATION_PINDA_MENU "Teplot. kalibrace" +MSG_CARD_MENU "Tisk z SD" +MSG_CLEAN_NOZZLE_E "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem." +MSG_CNG_SDCARD "Vymenit SD" +MSG_CONFIGURATION_VER " Last Updated: " +MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Dojely oba Z voziky k~hornimu dorazu?" +MSG_CONFIRM_NOZZLE_CLEAN "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem." +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem." +MSG_CONTROL "Kontrola" +MSG_COOLDOWN "Zchladit" +MSG_CORRECTLY "Vymena ok?" +MSG_CRASH_DET_ONLY_IN_NORMAL "\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu" +MSG_CRASH_DET_STEALTH_FORCE_OFF "\x1b[2JPOZOR:\x1b[1;0HCrash detekce\x1b[2;0Hdeaktivovana ve\x1b[3;0HStealth modu" +MSG_CRASH_DETECTED "Detekovan naraz." +MSG_CRASH_DETECTED2 "Naraz detekovan, pokracovat v tisku?" +MSG_CRASHDETECT_NA "Crash det. [N/A]" +MSG_CRASHDETECT_OFF "Crash det. [vyp]" +MSG_CRASHDETECT_ON "Crash det. [zap]" +MSG_CURRENT "Pouze aktualni" +MSG_DATE "Datum:" +MSG_DEFAULT_SETTINGS_LOADED "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd." +MSG_DISABLE_STEPPERS "Vypnout motory" +MSG_DWELL "Sleep..." +MSG_E_CAL_KNOB "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem." +MSG_END_FILE_LIST "End file list" +MSG_ENDSTOP_HIT "TRIGGERED" +MSG_ENDSTOP_OPEN "open" +MSG_ENDSTOPS_HIT "endstops hit: " +MSG_Enqueing "enqueing \"" +MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" +MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " +MSG_ERR_KILLED "Printer halted. kill() called!" +MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " +MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" +MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +MSG_ERROR "CHYBA:" +MSG_EXTRUDER "Extruder" +MSG_EXTRUDER_1 "Extruder 1" +MSG_EXTRUDER_2 "Extruder 2" +MSG_EXTRUDER_3 "Extruder 3" +MSG_EXTRUDER_4 "Extruder 4" +MSG_FACTOR " \002 Fact" +MSG_FAN_SPEED "Rychlost vent." +MSG_FANS_CHECK_OFF "Kontr. vent.[vyp]" +MSG_FANS_CHECK_ON "Kontr. vent.[zap]" +MSG_FIL_ADJUSTING "Probiha srovnani filamentu. Prosim cekejte." +MSG_FILAMENT_CLEAN "Filament vytlacen a spravne barvy?" +MSG_FILAMENT_LOADING_T0 "Vlozte filament do extruderu 1. Potvrdte tlacitkem." +MSG_FILAMENT_LOADING_T1 "Vlozte filament do extruderu 2. Potvrdte tlacitkem." +MSG_FILAMENT_LOADING_T2 "Vlozte filament do extruderu 3. Potvrdte tlacitkem." +MSG_FILAMENT_LOADING_T3 "Vlozte filament do extruderu 4. Potvrdte tlacitkem." +MSG_FILAMENT_SENSOR "Senzor filamentu" +MSG_FILAMENTCHANGE "Vymenit filament" +MSG_FILE_CNT "Nektere soubory nebudou setrideny. Maximalni pocet souboru pro setrideni je 100." +MSG_FILE_INCOMPLETE "Soubor nekompletni. Pokracovat?" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iterace " +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Hledam kalibracni bod podlozky" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " z 4" +MSG_FINISHING_MOVEMENTS "Dokoncovani pohybu" +MSG_FLOW "Prutok" +MSG_FLOW0 "Prutok 0" +MSG_FLOW1 "Prutok 1" +MSG_FLOW2 "Prutok 2" +MSG_FOLLOW_CALIBRATION_FLOW "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace." +MSG_FORCE_SELFTEST "Pro kalibraci presneho rehomovani bude nyni spusten selftest." +MSG_FREE_MEMORY " Free Memory: " +MSG_FSENS_AUTOLOAD_NA "F. autozav. [N/A]" +MSG_FSENS_AUTOLOAD_OFF "F. autozav. [vyp]" +MSG_FSENS_AUTOLOAD_ON "F. autozav. [zap]" +MSG_FSENS_NOT_RESPONDING "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni." +MSG_FSENSOR_NA "Fil. senzor [N/A]" +MSG_FSENSOR_OFF "Fil. senzor [vyp]" +MSG_FSENSOR_ON "Fil. senzor [zap]" +MSG_FW_VERSION_ALPHA "Pouzivate alpha verzi firmwaru. Jedna se o vyvojovou verzi. Pouzivani teto verze firmware neni doporuceno a muze zpusobit poskozeni tiskarny." +MSG_FW_VERSION_BETA "Pouzivate beta verzi firmwaru. Jedna se o vyvojovou verzi. Pouzivani teto verze firmware neni doporuceno a muze zpusobit poskozeni tiskarny." +MSG_FW_VERSION_RC "Tato verze firmware je release candidate. Nektere z funkci nemusi pracovat spolehlive." +MSG_FW_VERSION_UNKNOWN "VAROVANI: Neznama, nepodporovana verze firmware. Pouziti na vlastni nebezpeci!" +MSG_HEATING "Zahrivani" +MSG_HEATING_COMPLETE "Zahrivani OK." +MSG_HOMEYZ "Kalibrovat Z" +MSG_HOMEYZ "Kalibrovat Z" +MSG_HOMEYZ_DONE "Kalibrace OK" +MSG_HOMEYZ_DONE "Kalibrace OK" +MSG_HOMEYZ_PROGRESS "Kalibruji Z" +MSG_HOMEYZ_PROGRESS "Kalibruji Z" +MSG_CHANGE_EXTR "Zmenit extruder" +MSG_CHANGE_SUCCESS "Zmena uspesna!" +MSG_CHANGED_BOTH "Varovani: doslo ke zmene typu tiskarny a motherboardu." +MSG_CHANGED_MOTHERBOARD "Varovani: doslo ke zmene typu motherboardu." +MSG_CHANGED_PRINTER "Varovani: doslo ke zmene typu tiskarny." +MSG_CHANGING_FILAMENT "Vymena filamentu!" +MSG_CHECK_IDLER "Prosim otevrete idler a manualne odstrante filament." +MSG_CHOOSE_EXTRUDER "Vyberte extruder:" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Zlepsuji presnost kalibracniho bodu" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " z 4" +MSG_INFO_EXTRUDER "Extruder info" +MSG_INFO_NOZZLE_FAN "Trysk. vent:" +MSG_INFO_PRINT_FAN "Tisk. vent:" +MSG_INIT_SDCARD "Inic. SD" +MSG_INSERT_FILAMENT "Vlozte filament" +MSG_KILLED "KILLED. " +MSG_LANGUAGE_NAME "Cestina" +MSG_LANGUAGE_SELECT "Vyber jazyka" +MSG_LEFT "Levy:" +MSG_LOAD_ALL "Zavest vse" +MSG_LOAD_EPROM "Ulozit pamet" +MSG_LOAD_FILAMENT "Zavest filament" +MSG_LOAD_FILAMENT_1 "Zavest filament 1" +MSG_LOAD_FILAMENT_2 "Zavest filament 2" +MSG_LOAD_FILAMENT_3 "Zavest filament 3" +MSG_LOAD_FILAMENT_4 "Zavest filament 4" +MSG_LOADING_COLOR "Cisteni barvy" +MSG_LOADING_FILAMENT "Zavadeni filamentu" +MSG_LOOSE_PULLEY "Uvolnena remenicka" +MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " +MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " +MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " +MSG_M117_V2_CALIBRATION "M117 Kal. prvni vrstvy" +MSG_M119_REPORT "Reporting endstop status" +MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " +MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " +MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +MSG_MAIN "Hlavni nabidka" +MSG_MARK_FIL "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem." +MSG_MAX " \002 Max" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Merim referencni vysku kalibracniho bodu" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " z 9" +MSG_MEASURED_SKEW "Merene zkoseni:" +MSG_MENU_BELT_STATUS "Stav remenu" +MSG_MENU_CALIBRATION "Kalibrace" +MSG_MENU_TEMPERATURES "Teploty" +MSG_MENU_VOLTAGES "Napeti" +MSG_MESH_BED_LEVELING "Mesh Bed Leveling" +MSG_MIN " \002 Min" +MSG_MOTION "Pohyb" +MSG_MOVE_AXIS "Posunout osu" +MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem." +MSG_MOVE_E "Extruder" +MSG_MOVE_X "Posunout X" +MSG_MOVE_Y "Posunout Y" +MSG_MOVE_Z "Posunout Z" +MSG_NEW_FIRMWARE_AVAILABLE "Vysla nova verze firmware:" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosim aktualizujte." +MSG_NO "Ne" +MSG_NO_CARD "Zadna SD karta" +MSG_NO_MOVE "No move." +MSG_NOT_COLOR "Barva neni cista" +MSG_NOT_LOADED "Filament nezaveden" +MSG_NOZZLE "Tryska" +MSG_NOZZLE1 "Tryska2" +MSG_NOZZLE2 "Tryska3" +MSG_OK "ok" +MSG_PAPER "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu." +MSG_PAUSE_PRINT "Pozastavit tisk" +MSG_PICK_Z "Vyberte vytisk" +MSG_PID_EXTRUDER "PID kalibrace" +MSG_PID_FINISHED "PID kal. ukoncena" +MSG_PID_RUNNING "PID kal. " +MSG_PINDA_NOT_CALIBRATED "Tiskarna nebyla teplotne zkalibrovana" +MSG_PINDA_PREHEAT "Nahrivani PINDA" +MSG_PLA_FILAMENT_LOADED "Je PLA filament zaveden?" +MSG_PLACE_STEEL_SHEET "Umistete prosim tiskovy plat na heatbed" +MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +MSG_PLEASE_LOAD_PLA "Nejdrive zavedte PLA filament prosim." +MSG_PLEASE_WAIT "Prosim cekejte" +MSG_POWERUP "PowerUp" +MSG_PREHEAT "Predehrev" +MSG_PREHEAT_NOZZLE "Predehrejte trysku!" +MSG_PREPARE_FILAMENT "Pripravte filament" +MSG_PRESS "a stisknete tlacitko" +MSG_PRESS_TO_PREHEAT "Pro nahrati trysky a pokracovani stisknete tlacitko." +MSG_PRESS_TO_UNLOAD "Pro vysunuti filamentu stisknete prosim tlacitko" +MSG_PRINT_ABORTED "Tisk prerusen" +MSG_PRINT_PAUSED "Tisk pozastaven" +MSG_PULL_OUT_FILAMENT "Prosim vyjmete urychlene filament" +MSG_REBOOT "Restartujte tiskarnu" +MSG_RECOVER_PRINT "Detekovan vypadek proudu.Obnovit tisk?" +MSG_RECOVERING_PRINT "Obnovovani tisku " +MSG_RECTRACT "Rectract" +MSG_REFRESH "\xF8" "Obnovit" +MSG_REMOVE_STEEL_SHEET "Odstrante tiskovy plat z heatbed prosim." +MSG_RESEND "Resend: " +MSG_RESTORE_FAILSAFE "Obnovit vychozi" +MSG_RESUME_PRINT "Pokracovat" +MSG_RESUMING "Obnoveni tisku" +MSG_RESUMING_PRINT "Obnovovani tisku" +MSG_RIGHT "Pravy:" +MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " +MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir" +MSG_SD_CARD_OK "SD card ok" +MSG_SD_ERR_WRITE_TO_FILE "error writing to file" +MSG_SD_FILE_OPENED "File opened: " +MSG_SD_FILE_SELECTED "File selected" +MSG_SD_INIT_FAIL "SD init fail" +MSG_SD_INSERTED "Karta vlozena" +MSG_SD_NOT_PRINTING "Not SD printing" +MSG_SD_OPEN_FILE_FAIL "open failed, File: " +MSG_SD_OPENROOT_FAIL "openRoot failed" +MSG_SD_PRINTING_BYTE "SD printing byte " +MSG_SD_REMOVED "Karta vyjmuta" +MSG_SD_VOL_INIT_FAIL "volume.init failed" +MSG_SD_WORKDIR_FAIL "workDir open failed" +MSG_SD_WRITE_TO_FILE "Writing to file: " +MSG_SECOND_SERIAL_OFF "RPi port [vyp]" +MSG_SECOND_SERIAL_ON "RPi port [zap]" +MSG_SELFTEST "Selftest " +MSG_SELFTEST_AXIS "Osa" +MSG_SELFTEST_AXIS_LENGTH "Delka osy" +MSG_SELFTEST_BEDHEATER "Bed / Heater" +MSG_SELFTEST_COOLING_FAN "Predni tiskovy vent?" +MSG_SELFTEST_ENDSTOP "Endstop" +MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit" +MSG_SELFTEST_ENDSTOPS "Endstops" +MSG_SELFTEST_ERROR "Selftest error !" +MSG_SELFTEST_EXTRUDER_FAN "Levy vent na trysce?" +MSG_SELFTEST_EXTRUDER_FAN_SPEED "Levy vent.:" +MSG_SELFTEST_FAILED "Selftest selhal " +MSG_SELFTEST_FAN "Test ventilatoru" +MSG_SELFTEST_FAN_NO "Netoci se" +MSG_SELFTEST_FAN_YES "Toci se" +MSG_SELFTEST_FANS "Predni/levy vent." +MSG_SELFTEST_FILAMENT_SENSOR "Senzor filamentu:" +MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" +MSG_SELFTEST_CHECK_ALLCORRECT "Vse OK " +MSG_SELFTEST_CHECK_BED "Kontrola bed " +MSG_SELFTEST_CHECK_ENDSTOPS "Kontrola endstops" +MSG_SELFTEST_CHECK_FSENSOR "Kontrola senzoru" +MSG_SELFTEST_CHECK_HOTEND "Kontrola hotend " +MSG_SELFTEST_CHECK_X "Kontrola X axis " +MSG_SELFTEST_CHECK_Y "Kontrola Y axis " +MSG_SELFTEST_CHECK_Z "Kontrola Z axis " +MSG_SELFTEST_MOTOR "Motor" +MSG_SELFTEST_NOTCONNECTED "Nezapojeno " +MSG_SELFTEST_OK "Self test OK" +MSG_SELFTEST_PLEASECHECK "Zkontrolujte :" +MSG_SELFTEST_PRINT_FAN_SPEED "Tiskovy vent.:" +MSG_SELFTEST_START "Self test start " +MSG_SELFTEST_SWAPPED "Prohozene" +MSG_SELFTEST_WIRINGERROR "Chyba zapojeni" +MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" +MSG_SET_HOME_OFFSETS "Nastav pocatek home" +MSG_SET_ORIGIN "Nastav pocatek" +MSG_SET_TEMPERATURE "Nastavte teplotu:" +MSG_SETTINGS "Nastaveni" +MSG_SEVERE_SKEW "Tezke zkoseni:" +MSG_SHOW_END_STOPS "Stav konc. spin." +MSG_SILENT_MODE_OFF "Mod [vys. vykon]" +MSG_SILENT_MODE_ON "Mod [tichy]" +MSG_SLIGHT_SKEW "Lehke zkoseni:" +MSG_SORT_ALPHA "Trideni [Abeceda]" +MSG_SORT_NONE "Trideni [Zadne]" +MSG_SORT_TIME "Trideni [Cas]" +MSG_SORTING "Trideni souboru" +MSG_SPEED "Rychlost" +MSG_STACK_ERROR "Chyba - Doslo k prepisu staticke pameti!" +MSG_STATISTICS "Statistika " +MSG_STATS_FILAMENTUSED "Filament : " +MSG_STATS_PRINTTIME "Cas tisku : " +MSG_STATS_TOTALFILAMENT "Filament celkem :" +MSG_STATS_TOTALPRINTTIME "Celkovy cas :" +MSG_STEALTH_MODE_OFF "Mod [Normal]" +MSG_STEALTH_MODE_ON "Mod [Stealth]" +MSG_STEEL_SHEET_CHECK "Je tiskovy plat na heatbed?" +MSG_STEPPER_TOO_HIGH "Steprate too high: " +MSG_STOP_PRINT "Zastavit tisk" +MSG_STOPPED "STOPPED. " +MSG_STORE_EPROM "Store memory" +MSG_SUPPORT "Podpora" +MSG_SWITCH_PS_OFF "Zapnout zdroj" +MSG_SWITCH_PS_ON "Vypnout zdroj" +MSG_TAKE_EFFECT " pro projeveni zmen" +MSG_TEMP_CAL_FAILED "Teplotni kalibrace selhala" +MSG_TEMP_CALIBRATION "Tepl. kal. " +MSG_TEMP_CALIBRATION_DONE "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal." +MSG_TEMP_CALIBRATION_OFF "Tepl. kal. [vyp]" +MSG_TEMP_CALIBRATION_ON "Tepl. kal. [zap]" +MSG_TEMPERATURE "Teplota" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +MSG_TUNE "Ladit" +MSG_UNLOAD_ALL "Vyjmout vse" +MSG_UNLOAD_FILAMENT "Vyjmout filament" +MSG_UNLOAD_FILAMENT_1 "Vyjmout filam. 1" +MSG_UNLOAD_FILAMENT_2 "Vyjmout filam. 2" +MSG_UNLOAD_FILAMENT_3 "Vyjmout filam. 3" +MSG_UNLOAD_FILAMENT_4 "Vyjmout filam. 4" +MSG_UNLOAD_SUCCESSFUL "Bylo vysunuti filamentu uspesne?" +MSG_UNLOADING_FILAMENT "Vysouvam filament" +MSG_USB_PRINTING "Tisk z USB " +MSG_USED "Pouzite behem tisku" +MSG_USERWAIT "Wait for user..." +MSG_V2_CALIBRATION "Kal. prvni vrstvy" +MSG_VOLUMETRIC "Filament" +MSG_VOLUMETRIC_ENABLED "E in mm3" +MSG_WAITING_TEMP "Cekani na zchladnuti trysky a podlozky." +MSG_WAITING_TEMP_PINDA "Cekani na zchladnuti PINDA" +MSG_WATCH "Informace" +MSG_WIZARD "Wizard" +MSG_WIZARD_CALIBRATION_FAILED "Prosim nahlednete do manualu a opravte problem. Po te obnovte Wizarda rebootovanim tiskarny." +MSG_WIZARD_CLEAN_HEATBED "Prosim ocistete heatbed a stisknete tlacitko." +MSG_WIZARD_DONE "Vse je hotovo." +MSG_WIZARD_FILAMENT_LOADED "Je filament zaveden?" +MSG_WIZARD_HEATING "Predehrivam trysku. Prosim cekejte." +MSG_WIZARD_INSERT_CORRECT_FILAMENT "Prosim zavedte PLA filament a po te obnovte Wizarda stisknutim reset tlacitka." +MSG_WIZARD_LOAD_FILAMENT "Prosim vlozte PLA filament do extruderu, po te stisknete tlacitko pro zavedeni filamentu." +MSG_WIZARD_PLA_FILAMENT "Je to PLA filament?" +MSG_WIZARD_QUIT "Wizarda muzete kdykoliv znovu spustit z menu Calibration -> Wizard" +MSG_WIZARD_REPEAT_V2_CAL "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a heatbed?" +MSG_WIZARD_RERUN "Spusteni Wizarda vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?" +MSG_WIZARD_SELFTEST "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny." +MSG_WIZARD_V2_CAL "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem heatbedu." +MSG_WIZARD_V2_CAL_2 "Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace" +MSG_WIZARD_WELCOME "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?" +MSG_WIZARD_WILL_PREHEAT "Nyni predehreji trysku pro PLA." +MSG_WIZARD_XYZ_CAL "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min." +MSG_WIZARD_Z_CAL "Nyni provedu z kalibraci." +MSG_XYZ_DETAILS "Detaily XYZ kal." +MSG_Y_DISTANCE_FROM_MIN "Y vzdalenost od min:" +MSG_YES "Ano" +WELCOME_MSG CUSTOM_MENDEL_NAME " ok" diff --git a/lang_upgrade/msgs_de.txt b/lang_upgrade/msgs_de.txt new file mode 100644 index 00000000..7c42edb6 --- /dev/null +++ b/lang_upgrade/msgs_de.txt @@ -0,0 +1,67 @@ +MSG_ALL "Alle" +MSG_CALIBRATE_PINDA "Kalibrieren" +MSG_CALIBRATION_PINDA_MENU "Temp. kalibrieren" +MSG_CURRENT "Aktuelles" +MSG_DATE "Datum" +MSG_EXTRUDER "Extruder" +MSG_EXTRUDER_1 "Extruder 1" +MSG_EXTRUDER_2 "Extruder 2" +MSG_EXTRUDER_3 "Extruder 3" +MSG_EXTRUDER_4 "Extruder 4" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteration " +MSG_FINISHING_MOVEMENTS "Bewegung beenden" +MSG_CHOOSE_EXTRUDER "Waehlen Sie Extruder" +MSG_LEFT "Links:" +MSG_LOAD_ALL "Alle laden" +MSG_LOAD_FILAMENT_1 "Filament 1 laden" +MSG_LOAD_FILAMENT_2 "Filament 2 laden" +MSG_LOAD_FILAMENT_3 "Filament 3 laden" +MSG_LOAD_FILAMENT_4 "Filament 4 laden" +MSG_M117_V2_CALIBRATION "M117 Erste-Schicht Kal." +MSG_MEASURED_SKEW "Schraeglauf:" +MSG_PID_EXTRUDER "PID Kalibrierung" +MSG_PID_FINISHED "PID Kalib. fertig" +MSG_PID_RUNNING "PID Kalib." +MSG_PINDA_NOT_CALIBRATED "Temperatur wurde nicht kalibriert" +MSG_PINDA_PREHEAT "PINDA erwaermen" +MSG_PLA_FILAMENT_LOADED "Ist PLA Filament geladen?" +MSG_PLEASE_LOAD_PLA "Bitte laden Sie zuerst PLA Filament." +MSG_PREPARE_FILAMENT "Filam. bereithalten" +MSG_PRINT_PAUSED "Druck pausiert" +MSG_RESUMING_PRINT "Druck weitergehen" +MSG_RIGHT "Rechts:" +MSG_SET_TEMPERATURE "Temp. einsetzen" +MSG_SEVERE_SKEW "Schwerer Schr.:" +MSG_SLIGHT_SKEW "Leichter Schr.:" +MSG_TEMP_CALIBRATION "Temp Kalib. " +MSG_TEMP_CALIBRATION_DONE "Temp. Kalibrierung fertig. Klicken um weiter zu gehen." +MSG_TEMP_CALIBRATION_OFF "Temp. Kal. [OFF]" +MSG_TEMP_CALIBRATION_ON "Temp. Kal. [ON]" +MSG_UNLOAD_ALL "Alles entladen" +MSG_UNLOAD_FILAMENT_1 "Filam. 1 entladen" +MSG_UNLOAD_FILAMENT_2 "Filam. 2 entladen" +MSG_UNLOAD_FILAMENT_3 "Filam. 3 entladen" +MSG_UNLOAD_FILAMENT_4 "Filam. 4 entladen" +MSG_USED "Beim Druck benutzte" +MSG_V2_CALIBRATION "Erste-Schicht Kal" +MSG_WIZARD "Wizard" +MSG_WIZARD_CALIBRATION_FAILED "Bitte ueberpruefen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten." +MSG_WIZARD_CLEAN_HEATBED "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." +MSG_WIZARD_DONE "Alles wurde getan. Viel Spass beim Drucken!" +MSG_WIZARD_FILAMENT_LOADED "Ist das Filament geladen?" +MSG_WIZARD_HEATING "Vorheizen der Duese. Bitte warten." +MSG_WIZARD_INSERT_CORRECT_FILAMENT "Bitte laden Sie PLA-Filament und fahren Sie mit dem Assistenten fort, indem Sie den Drucker neu starten." +MSG_WIZARD_LOAD_FILAMENT "Fuehren Sie bitte PLA Filament in den Extruder und bestaetigen Sie den Knopf um es zu laden." +MSG_WIZARD_PLA_FILAMENT "Ist es wirklich PLA Filament?" +MSG_WIZARD_QUIT "Sie koennen immer den Asistenten im Menu neu aufrufen: Kalibrierung -> Assistant" +MSG_WIZARD_REPEAT_V2_CAL "Moechten Sie den letzten Schritt wiederholen um den Abstand zwischen Duese und Druckbett neu einzustellen?" +MSG_WIZARD_RERUN "Der laufende Assistent loescht die aktuelle Kalibrierergebnisse und wird von Anfang an beginnen. Fortsetzen?" +MSG_WIZARD_SELFTEST "Zunaechst fuehre ich den Selbsttest durch um die haeufigsten Probleme bei der Aufbau zu ueberpruefen." +MSG_WIZARD_V2_CAL "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." +MSG_WIZARD_V2_CAL_2 "Ich werde jetzt erste Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Ueberpruefen Sie die Bilder in unserem Handbuch im Kapitel Kalibrierung" +MSG_WIZARD_WELCOME "Hallo, ich bin dein Original Prusa i3 Drucker. Moechten Sie meine Hilfe durch den Setup-Prozess?" +MSG_WIZARD_WILL_PREHEAT "Jetzt werde ich die Duese fuer PLA vorheizen. " +MSG_WIZARD_XYZ_CAL "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern" +MSG_WIZARD_Z_CAL "Ich werde jetzt die Z Kalibrierung durchfuehren." +MSG_XYZ_DETAILS "XYZ Kal. Details" +MSG_Y_DISTANCE_FROM_MIN "Y Entfernung vom min" diff --git a/lang_upgrade/msgs_en.txt b/lang_upgrade/msgs_en.txt new file mode 100644 index 00000000..dbe032f9 --- /dev/null +++ b/lang_upgrade/msgs_en.txt @@ -0,0 +1,373 @@ +MSG_ADJUSTZ c=0 r=0 "Auto adjust Z?" +MSG_ALL c=19 r=1 "All" +MSG_AUTO_HOME c=0 r=0 "Auto home" +MSG_AUTO_MODE_ON c=0 r=0 "Mode [auto power]" +MSG_AUTOLOAD_FILAMENT c=17 r=0 "AutoLoad filament" +MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." +MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." +MSG_BABYSTEP_X c=0 r=0 "Babystep X" +MSG_BABYSTEP_Y c=0 r=0 "Babystep Y" +MSG_BABYSTEP_Z c=0 r=0 "Live adjust Z" +MSG_BABYSTEP_Z_NOT_SET c=20 r=12 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +MSG_BABYSTEPPING_X c=0 r=0 "Babystepping X" +MSG_BABYSTEPPING_Y c=0 r=0 "Babystepping Y" +MSG_BABYSTEPPING_Z c=20 r=0 "Adjusting Z" +MSG_BED c=0 r=0 "Bed" +MSG_BED_CORRECTION_FRONT c=14 r=1 "Front side[um]" +MSG_BED_CORRECTION_LEFT c=14 r=1 "Left side [um]" +MSG_BED_CORRECTION_MENU c=0 r=0 "Bed level correct" +MSG_BED_CORRECTION_REAR c=14 r=1 "Rear side [um]" +MSG_BED_CORRECTION_RESET c=0 r=0 "Reset" +MSG_BED_CORRECTION_RIGHT c=14 r=1 "Right side[um]" +MSG_BED_DONE c=0 r=0 "Bed done" +MSG_BED_HEATING c=0 r=0 "Bed Heating" +MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 "Heating disabled by safety timer." +MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 "Bed leveling failed. Sensor triggered too high. Waiting for reset." +MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration failed. Front calibration points not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 "XYZ calibration failed. Left front calibration point not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration failed. Right front calibration point not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 "XYZ calibration failed. Please consult the manual." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 "XYZ calibration failed. Bed calibration point was not found." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 "XYZ calibration all right. Skew will be corrected automatically." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration compromised. Front calibration points not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 "XYZ calibration compromised. Left front calibration point not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration compromised. Right front calibration point not reachable." +MSG_BEGIN_FILE_LIST c=0 r=0 "Begin file list" +MSG_CALIBRATE_BED c=0 r=0 "Calibrate XYZ" +MSG_CALIBRATE_BED_RESET c=0 r=0 "Reset XYZ calibr." +MSG_CALIBRATE_E c=20 r=1 "Calibrate E" +MSG_CALIBRATE_PINDA c=17 r=1 "Calibrate" +MSG_CALIBRATE_Z_AUTO c=20 r=2 "Calibrating Z" +MSG_CALIBRATION_PINDA_MENU c=17 r=1 "Temp. calibration" +MSG_CARD_MENU c=0 r=0 "Print from SD" +MSG_CLEAN_NOZZLE_E c=20 r=8 "E calibration finished. Please clean the nozzle. Click when done." +MSG_CNG_SDCARD c=0 r=0 "Change SD card" +MSG_CONFIGURATION_VER c=0 r=0 " Last Updated: " +MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 "Are left and right Z~carriages all up?" +MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ c=20 r=8 "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done." +MSG_CONTROL c=0 r=0 "Control" +MSG_COOLDOWN c=0 r=0 "Cooldown" +MSG_CORRECTLY c=20 r=0 "Changed correctly?" +MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +MSG_CRASH_DETECTED c=20 r=1 "Crash detected." +MSG_CRASH_DETECTED2 c=20 r=2 "Crash detected. Continue printing?" +MSG_CRASHDETECT_NA c=0 r=0 "Crash det. [N/A]" +MSG_CRASHDETECT_OFF c=0 r=0 "Crash det. [off]" +MSG_CRASHDETECT_ON c=0 r=0 "Crash det. [on]" +MSG_CURRENT c=19 r=1 "Current" +MSG_DATE c=17 r=1 "Date:" +MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 "Old settings found. Default PID, Esteps etc. will be set." +MSG_DISABLE_STEPPERS c=0 r=0 "Disable steppers" +MSG_DWELL c=0 r=0 "Sleep..." +MSG_E_CAL_KNOB c=20 r=8 "Rotate knob until mark reaches extruder body. Click when done." +MSG_END_FILE_LIST c=0 r=0 "End file list" +MSG_ENDSTOP_HIT c=0 r=0 "TRIGGERED" +MSG_ENDSTOP_OPEN c=0 r=0 "open" +MSG_ENDSTOPS_HIT c=0 r=0 "endstops hit: " +MSG_Enqueing c=0 r=0 "enqueing \"" +MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 " cold extrusion prevented" +MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 "checksum mismatch, Last Line: " +MSG_ERR_KILLED c=0 r=0 "Printer halted. kill() called!" +MSG_ERR_NO_CHECKSUM c=0 r=0 "No Checksum with line number, Last Line: " +MSG_ERR_NO_THERMISTORS c=0 r=0 "No thermistors - no temperature" +MSG_ERR_STOPPED c=0 r=0 "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +MSG_ERROR c=0 r=0 "ERROR:" +MSG_EXTRUDER c=17 r=1 "Extruder" +MSG_EXTRUDER_1 c=17 r=1 "Extruder 1" +MSG_EXTRUDER_2 c=17 r=1 "Extruder 2" +MSG_EXTRUDER_3 c=17 r=1 "Extruder 3" +MSG_EXTRUDER_4 c=17 r=1 "Extruder 4" +MSG_EXTRUDER_CORRECTION c=9 r=0 "E-correct" +MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 " [off" +MSG_FACTOR c=0 r=0 " \002 Fact" +MSG_FAN_SPEED c=14 r=0 "Fan speed" +MSG_FANS_CHECK_OFF c=17 r=1 "Fans check [off]" +MSG_FANS_CHECK_ON c=17 r=1 "Fans check [on]" +MSG_FIL_ADJUSTING c=20 r=4 "Adjusting filaments. Please wait." +MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" +MSG_FILAMENT_LOADING_T0 c=20 r=4 "Insert filament into extruder 1. Click when done." +MSG_FILAMENT_LOADING_T1 c=20 r=4 "Insert filament into extruder 2. Click when done." +MSG_FILAMENT_LOADING_T2 c=20 r=4 "Insert filament into extruder 3. Click when done." +MSG_FILAMENT_LOADING_T3 c=20 r=4 "Insert filament into extruder 4. Click when done." +MSG_FILAMENT_SENSOR c=20 r=0 "Filament sensor" +MSG_FILAMENTCHANGE c=0 r=0 "Change filament" +MSG_FILE_CNT c=20 r=4 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +MSG_FILE_INCOMPLETE c=20 r=2 "File incomplete. Continue anyway?" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 "Iteration " +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 "Searching bed calibration point" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 " of 4" +MSG_FINISHING_MOVEMENTS c=20 r=1 "Finishing movements" +MSG_FLOW c=0 r=0 "Flow" +MSG_FLOW0 c=0 r=0 "Flow 0" +MSG_FLOW1 c=0 r=0 "Flow 1" +MSG_FLOW2 c=0 r=0 "Flow 2" +MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +MSG_FORCE_SELFTEST c=20 r=8 "Selftest will be run to calibrate accurate sensorless rehoming." +MSG_FREE_MEMORY c=0 r=0 " Free Memory: " +MSG_FSENS_AUTOLOAD_NA c=17 r=1 "F. autoload [N/A]" +MSG_FSENS_AUTOLOAD_OFF c=17 r=1 "F. autoload [off]" +MSG_FSENS_AUTOLOAD_ON c=17 r=1 "F. autoload [on]" +MSG_FSENS_NOT_RESPONDING c=20 r=4 "ERROR: Filament sensor is not responding, please check connection." +MSG_FSENSOR_NA c=0 r=0 "Fil. sensor [N/A]" +MSG_FSENSOR_OFF c=0 r=0 "Fil. sensor [off]" +MSG_FSENSOR_ON c=0 r=0 "Fil. sensor [on]" +MSG_FW_VERSION_ALPHA c=20 r=8 "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +MSG_FW_VERSION_BETA c=20 r=8 "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +MSG_FW_VERSION_RC c=20 r=8 "This firmware version is release candidate. Some of the features may not work properly." +MSG_FW_VERSION_UNKNOWN c=20 r=8 "WARNING: This is an unofficial, unsupported build. Use at your own risk!" +MSG_HEATING c=0 r=0 "Heating" +MSG_HEATING_COMPLETE c=20 r=0 "Heating done." +MSG_HOMEYZ c=0 r=0 "Calibrate Z" +MSG_HOMEYZ_DONE c=0 r=0 "Calibration done" +MSG_HOMEYZ_PROGRESS c=0 r=0 "Calibrating Z" +MSG_CHANGE_EXTR c=20 r=1 "Change extruder" +MSG_CHANGE_SUCCESS c=0 r=0 "Change success!" +MSG_CHANGED_BOTH c=20 r=4 "Warning: both printer type and motherboard type changed." +MSG_CHANGED_MOTHERBOARD c=20 r=4 "Warning: motherboard type changed." +MSG_CHANGED_PRINTER c=20 r=4 "Warning: printer type changed." +MSG_CHANGING_FILAMENT c=20 r=0 "Changing filament!" +MSG_CHECK_IDLER c=20 r=4 "Please open idler and remove filament manually." +MSG_CHOOSE_EXTRUDER c=20 r=1 "Choose extruder:" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 "Improving bed calibration point" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 " of 4" +MSG_INFO_EXTRUDER c=15 r=1 "Extruder info" +MSG_INFO_FILAMENT_XDIFF c=11 r=1 "Fil. Xd:" +MSG_INFO_FILAMENT_YDIFF c=11 r=1 "Fil. Ydiff:" +MSG_INFO_NOZZLE_FAN c=11 r=1 "Nozzle FAN:" +MSG_INFO_PRINT_FAN c=11 r=1 "Print FAN: " +MSG_INIT_SDCARD c=0 r=0 "Init. SD card" +MSG_INSERT_FILAMENT c=20 r=0 "Insert filament" +MSG_KILLED c=0 r=0 "KILLED. " +MSG_LANGUAGE_NAME c=0 r=0 "English" +MSG_LANGUAGE_SELECT c=0 r=0 "Select language" +MSG_LEFT c=12 r=1 "Left:" +MSG_LOAD_ALL c=0 r=0 "Load all" +MSG_LOAD_EPROM c=0 r=0 "Load memory" +MSG_LOAD_FILAMENT c=17 r=0 "Load filament" +MSG_LOAD_FILAMENT_1 c=17 r=0 "Load filament 1" +MSG_LOAD_FILAMENT_2 c=17 r=0 "Load filament 2" +MSG_LOAD_FILAMENT_3 c=17 r=0 "Load filament 3" +MSG_LOAD_FILAMENT_4 c=17 r=0 "Load filament 4" +MSG_LOADING_COLOR c=0 r=0 "Loading color" +MSG_LOADING_FILAMENT c=20 r=0 "Loading filament" +MSG_LOOSE_PULLEY c=20 r=1 "Loose pulley" +MSG_M104_INVALID_EXTRUDER c=0 r=0 "M104 Invalid extruder " +MSG_M105_INVALID_EXTRUDER c=0 r=0 "M105 Invalid extruder " +MSG_M109_INVALID_EXTRUDER c=0 r=0 "M109 Invalid extruder " +MSG_M117_V2_CALIBRATION c=25 r=1 "M117 First layer cal." +MSG_M119_REPORT c=0 r=0 "Reporting endstop status" +MSG_M200_INVALID_EXTRUDER c=0 r=0 "M200 Invalid extruder " +MSG_M218_INVALID_EXTRUDER c=0 r=0 "M218 Invalid extruder " +MSG_M221_INVALID_EXTRUDER c=0 r=0 "M221 Invalid extruder " +MSG_MAIN c=0 r=0 "Main" +MSG_MARK_FIL c=20 r=8 "Mark filament 100mm from extruder body. Click when done." +MSG_MAX c=0 r=0 " \002 Max" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 "Measuring reference height of calibration point" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 " of 9" +MSG_MEASURED_OFFSET c=0 r=0 "[0;0] point offset" +MSG_MEASURED_SKEW c=15 r=1 "Measured skew:" +MSG_MENU_BELT_STATUS c=15 r=1 "Belt status" +MSG_MENU_CALIBRATION c=0 r=0 "Calibration" +MSG_MENU_TEMPERATURES c=15 r=1 "Temperatures" +MSG_MENU_VOLTAGES c=15 r=1 "Voltages" +MSG_MESH_BED_LEVELING c=0 r=0 "Mesh Bed Leveling" +MSG_MIN c=0 r=0 " \002 Min" +MSG_MOTION c=0 r=0 "Motion" +MSG_MOVE_AXIS c=0 r=0 "Move axis" +MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +MSG_MOVE_E c=0 r=0 "Extruder" +MSG_MOVE_X c=0 r=0 "Move X" +MSG_MOVE_Y c=0 r=0 "Move Y" +MSG_MOVE_Z c=0 r=0 "Move Z" +MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 "New firmware version available:" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 "Please upgrade." +MSG_NO c=0 r=0 "No" +MSG_NO_CARD c=0 r=0 "No SD card" +MSG_NO_MOVE c=0 r=0 "No move." +MSG_NOT_COLOR c=0 r=0 "Color not correct" +MSG_NOT_LOADED c=19 r=0 "Filament not loaded" +MSG_NOZZLE c=0 r=0 "Nozzle" +MSG_NOZZLE1 c=0 r=0 "Nozzle2" +MSG_NOZZLE2 c=0 r=0 "Nozzle3" +MSG_OK c=0 r=0 "ok" +MSG_PAPER c=20 r=8 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +MSG_PAUSE_PRINT c=0 r=0 "Pause print" +MSG_PICK_Z c=0 r=0 "Pick print" +MSG_PID_EXTRUDER c=17 r=1 "PID calibration" +MSG_PID_FINISHED c=20 r=1 "PID cal. finished" +MSG_PID_RUNNING c=20 r=1 "PID cal. " +MSG_PINDA_NOT_CALIBRATED c=20 r=4 "Temperature calibration has not been run yet" +MSG_PINDA_PREHEAT c=20 r=1 "PINDA Heating" +MSG_PLA_FILAMENT_LOADED c=20 r=2 "Is PLA filament loaded?" +MSG_PLACE_STEEL_SHEET c=20 r=4 "Please place steel sheet on heatbed." +MSG_PLANNER_BUFFER_BYTES c=0 r=0 " PlannerBufferBytes: " +MSG_PLEASE_LOAD_PLA c=20 r=4 "Please load PLA filament first." +MSG_PLEASE_WAIT c=20 r=0 "Please wait" +MSG_POWERUP c=0 r=0 "PowerUp" +MSG_PREHEAT c=0 r=0 "Preheat" +MSG_PREHEAT_NOZZLE c=20 r=0 "Preheat the nozzle!" +MSG_PREPARE_FILAMENT c=20 r=1 "Prepare new filament" +MSG_PRESS c=20 r=0 "and press the knob" +MSG_PRESS_TO_PREHEAT c=20 r=4 "Press knob to preheat nozzle and continue." +MSG_PRESS_TO_UNLOAD c=20 r=4 "Please press the knob to unload filament" +MSG_PRINT_ABORTED c=20 r=0 "Print aborted" +MSG_PRINT_PAUSED c=20 r=1 "Print paused" +MSG_PRINTER_DISCONNECTED c=20 r=1 "Printer disconnected" +MSG_PRUSA3D c=0 r=0 "prusa3d.com" +MSG_PRUSA3D_FORUM c=0 r=0 "forum.prusa3d.com" +MSG_PRUSA3D_HOWTO c=0 r=0 "howto.prusa3d.com" +MSG_PULL_OUT_FILAMENT c=20 r=4 "Please pull out filament immediately" +MSG_REBOOT c=20 r=0 "Reboot the printer" +MSG_RECOVER_PRINT c=20 r=2 "Blackout occurred. Recover print?" +MSG_RECOVERING_PRINT c=20 r=1 "Recovering print " +MSG_RECTRACT c=0 r=0 "Rectract" +MSG_REFRESH c=0 r=0 "\xF8" "Refresh" +MSG_REMOVE_STEEL_SHEET c=20 r=4 "Please remove steel sheet from heatbed." +MSG_RESEND c=0 r=0 "Resend: " +MSG_RESTORE_FAILSAFE c=0 r=0 "Restore failsafe" +MSG_RESUME_PRINT c=0 r=0 "Resume print" +MSG_RESUMING c=0 r=0 "Resuming print" +MSG_RESUMING_PRINT c=20 r=1 "Resuming print" +MSG_RIGHT c=12 r=1 "Right:" +MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 "Cannot enter subdir: " +MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 "Cannot open subdir" +MSG_SD_CARD_OK c=0 r=0 "SD card ok" +MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 "error writing to file" +MSG_SD_FILE_OPENED c=0 r=0 "File opened: " +MSG_SD_FILE_SELECTED c=0 r=0 "File selected" +MSG_SD_INIT_FAIL c=0 r=0 "SD init fail" +MSG_SD_INSERTED c=0 r=0 "Card inserted" +MSG_SD_NOT_PRINTING c=0 r=0 "Not SD printing" +MSG_SD_OPEN_FILE_FAIL c=0 r=0 "open failed, File: " +MSG_SD_OPENROOT_FAIL c=0 r=0 "openRoot failed" +MSG_SD_PRINTING_BYTE c=0 r=0 "SD printing byte " +MSG_SD_REMOVED c=0 r=0 "Card removed" +MSG_SD_VOL_INIT_FAIL c=0 r=0 "volume.init failed" +MSG_SD_WORKDIR_FAIL c=0 r=0 "workDir open failed" +MSG_SD_WRITE_TO_FILE c=0 r=0 "Writing to file: " +MSG_SECOND_SERIAL_OFF c=17 r=1 "RPi port [off]" +MSG_SECOND_SERIAL_ON c=17 r=1 "RPi port [on]" +MSG_SELFTEST c=0 r=0 "Selftest " +MSG_SELFTEST_AXIS c=0 r=0 "Axis" +MSG_SELFTEST_AXIS_LENGTH c=0 r=0 "Axis length" +MSG_SELFTEST_BEDHEATER c=0 r=0 "Bed / Heater" +MSG_SELFTEST_COOLING_FAN c=20 r=0 "Front print fan?" +MSG_SELFTEST_ENDSTOP c=0 r=0 "Endstop" +MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 "Endstop not hit" +MSG_SELFTEST_ENDSTOPS c=0 r=0 "Endstops" +MSG_SELFTEST_ERROR c=0 r=0 "Selftest error !" +MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 "Left hotend fan?" +MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 "Extruder fan:" +MSG_SELFTEST_FAILED c=20 r=0 "Selftest failed " +MSG_SELFTEST_FAN c=20 r=0 "Fan test" +MSG_SELFTEST_FAN_NO c=19 r=0 "Not spinning" +MSG_SELFTEST_FAN_YES c=19 r=0 "Spinning" +MSG_SELFTEST_FANS c=0 r=0 "Front/left fans" +MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 "Filament sensor:" +MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 "Heater/Thermistor" +MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 "All correct " +MSG_SELFTEST_CHECK_BED c=20 r=0 "Checking bed " +MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 "Checking endstops" +MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 "Checking sensors " +MSG_SELFTEST_CHECK_HOTEND c=20 r=0 "Checking hotend " +MSG_SELFTEST_CHECK_X c=20 r=0 "Checking X axis " +MSG_SELFTEST_CHECK_Y c=20 r=0 "Checking Y axis " +MSG_SELFTEST_CHECK_Z c=20 r=0 "Checking Z axis " +MSG_SELFTEST_MOTOR c=0 r=0 "Motor" +MSG_SELFTEST_NOTCONNECTED c=0 r=0 "Not connected" +MSG_SELFTEST_OK c=0 r=0 "Self test OK" +MSG_SELFTEST_PLEASECHECK c=0 r=0 "Please check :" +MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 "Print fan:" +MSG_SELFTEST_START c=20 r=0 "Self test start " +MSG_SELFTEST_SWAPPED c=0 r=0 "Swapped" +MSG_SELFTEST_WIRINGERROR c=0 r=0 "Wiring error" +MSG_SERIAL_ERROR_MENU_STRUCTURE c=0 r=0 "Error in menu structure" +MSG_SET_HOME_OFFSETS c=0 r=0 "Set home offsets" +MSG_SET_ORIGIN c=0 r=0 "Set origin" +MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" +MSG_SETTINGS c=0 r=0 "Settings" +MSG_SEVERE_SKEW c=15 r=1 "Severe skew:" +MSG_SHOW_END_STOPS c=17 r=1 "Show end stops" +MSG_SILENT_MODE_OFF c=0 r=0 "Mode [high power]" +MSG_SILENT_MODE_ON c=0 r=0 "Mode [silent]" +MSG_SLIGHT_SKEW c=15 r=1 "Slight skew:" +MSG_SORT_ALPHA c=17 r=1 "Sort: [Alphabet]" +MSG_SORT_NONE c=17 r=1 "Sort: [None]" +MSG_SORT_TIME c=17 r=1 "Sort: [Time]" +MSG_SORTING c=20 r=1 "Sorting files" +MSG_SPEED c=0 r=0 "Speed" +MSG_STACK_ERROR c=20 r=4 "Error - static memory has been overwritten" +MSG_STATISTICS c=0 r=0 "Statistics " +MSG_STATS_FILAMENTUSED c=20 r=0 "Filament used: " +MSG_STATS_PRINTTIME c=20 r=0 "Print time: " +MSG_STATS_TOTALFILAMENT c=20 r=0 "Total filament :" +MSG_STATS_TOTALPRINTTIME c=20 r=0 "Total print time :" +MSG_STEALTH_MODE_OFF c=0 r=0 "Mode [Normal]" +MSG_STEALTH_MODE_ON c=0 r=0 "Mode [Stealth]" +MSG_STEEL_SHEET_CHECK c=20 r=2 "Is steel sheet on heatbed?" +MSG_STEPPER_TIMER_OVERFLOW_ERROR c=20 r=4 "Error - stepper timer overflow" +MSG_STEPPER_TOO_HIGH c=0 r=0 "Steprate too high: " +MSG_STOP_PRINT c=0 r=0 "Stop print" +MSG_STOPPED c=0 r=0 "STOPPED. " +MSG_STORE_EPROM c=0 r=0 "Store memory" +MSG_SUPPORT c=0 r=0 "Support" +MSG_SWITCH_PS_OFF c=0 r=0 "Switch power off" +MSG_SWITCH_PS_ON c=0 r=0 "Switch power on" +MSG_TAKE_EFFECT c=20 r=0 " for take effect" +MSG_TEMP_CAL_FAILED c=20 r=8 "Temperature calibration failed" +MSG_TEMP_CAL_WARNING c=20 r=4 "Stable ambient temperature 21-26C is needed a rigid stand is required." +MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " +MSG_TEMP_CALIBRATION_DONE c=20 r=12 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" +MSG_TEMP_CALIBRATION_ON c=20 r=1 "Temp. cal. [on]" +MSG_TEMPERATURE c=0 r=0 "Temperature" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 "SD card [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 "SD card [FlshAir]" +MSG_TUNE c=0 r=0 "Tune" +MSG_UNLOAD_ALL c=0 r=0 "Unload all" +MSG_UNLOAD_FILAMENT c=17 r=0 "Unload filament" +MSG_UNLOAD_FILAMENT_1 c=17 r=0 "Unload filament 1" +MSG_UNLOAD_FILAMENT_2 c=17 r=0 "Unload filament 2" +MSG_UNLOAD_FILAMENT_3 c=17 r=0 "Unload filament 3" +MSG_UNLOAD_FILAMENT_4 c=17 r=0 "Unload filament 4" +MSG_UNLOAD_SUCCESSFUL c=20 r=2 "Was filament unload successful?" +MSG_UNLOADING_FILAMENT c=20 r=1 "Unloading filament" +MSG_USB_PRINTING c=0 r=0 "USB printing " +MSG_USED c=19 r=1 "Used during print" +MSG_USERWAIT c=0 r=0 "Wait for user..." +MSG_V2_CALIBRATION c=17 r=1 "First layer cal." +MSG_VOLUMETRIC c=0 r=0 "Filament" +MSG_VOLUMETRIC_ENABLED c=0 r=0 "E in mm3" +MSG_WAITING_TEMP c=20 r=3 "Waiting for nozzle and bed cooling" +MSG_WAITING_TEMP_PINDA c=20 r=3 "Waiting for PINDA probe cooling" +MSG_WATCH c=0 r=0 "Info screen" +MSG_WIZARD c=17 r=1 "Wizard" +MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +MSG_WIZARD_CLEAN_HEATBED c=20 r=8 "Please clean heatbed and then press the knob." +MSG_WIZARD_DONE c=20 r=8 "All is done. Happy printing!" +MSG_WIZARD_FILAMENT_LOADED c=20 r=2 "Is filament loaded?" +MSG_WIZARD_HEATING c=20 r=3 "Preheating nozzle. Please wait." +MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 "Please load PLA filament and then resume Wizard by rebooting the printer." +MSG_WIZARD_LOAD_FILAMENT c=20 r=8 "Please insert PLA filament to the extruder, then press knob to load it." +MSG_WIZARD_PLA_FILAMENT c=20 r=2 "Is it PLA filament?" +MSG_WIZARD_QUIT c=20 r=8 "You can always resume the Wizard from Calibration -> Wizard." +MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 "Do you want to repeat last step to readjust distance between nozzle and heatbed?" +MSG_WIZARD_RERUN c=20 r=7 "Running Wizard will delete current calibration results and start from the beginning. Continue?" +MSG_WIZARD_SELFTEST c=20 r=8 "First, I will run the selftest to check most common assembly problems." +MSG_WIZARD_V2_CAL c=20 r=8 "Now I will calibrate distance between tip of the nozzle and heatbed surface." +MSG_WIZARD_V2_CAL_2 c=20 r=12 "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +MSG_WIZARD_WELCOME c=20 r=7 "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +MSG_WIZARD_WILL_PREHEAT c=20 r=4 "Now I will preheat nozzle for PLA." +MSG_WIZARD_XYZ_CAL c=20 r=8 "I will run xyz calibration now. It will take approx. 12 mins." +MSG_WIZARD_Z_CAL c=20 r=8 "I will run z calibration now." +MSG_XYZ_DETAILS c=19 r=1 "XYZ cal. details" +MSG_Y_DISTANCE_FROM_MIN c=20 r=1 "Y distance from min:" +MSG_YES c=0 r=0 "Yes" +WELCOME_MSG c=20 r=0 CUSTOM_MENDEL_NAME " ready." diff --git a/lang_upgrade/msgs_en_unused.txt b/lang_upgrade/msgs_en_unused.txt new file mode 100644 index 00000000..f9b9ad86 --- /dev/null +++ b/lang_upgrade/msgs_en_unused.txt @@ -0,0 +1,30 @@ +MSG_BABYSTEP_X c=0 r=0 "Babystep X" +MSG_BABYSTEP_Y c=0 r=0 "Babystep Y" +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ c=20 r=8 "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done." +MSG_CONTROL c=0 r=0 "Control" +MSG_CRASH_DETECTED2 c=20 r=2 "Crash detected. Continue printing?" +MSG_FIL_ADJUSTING c=20 r=4 "Adjusting filaments. Please wait." +MSG_FLOW0 c=0 r=0 "Flow 0" +MSG_FLOW1 c=0 r=0 "Flow 1" +MSG_FLOW2 c=0 r=0 "Flow 2" +MSG_FW_VERSION_RC c=20 r=8 "This firmware version is release candidate. Some of the features may not work properly." +MSG_INFO_FILAMENT_XDIFF c=11 r=1 "Fil. Xd:" +MSG_INFO_FILAMENT_YDIFF c=11 r=1 "Fil. Ydiff:" +MSG_LANGUAGE_NAME c=0 r=0 "English" +MSG_LOAD_EPROM c=0 r=0 "Load memory" +MSG_MOTION c=0 r=0 "Motion" +MSG_REBOOT c=20 r=0 "Reboot the printer" +MSG_RECTRACT c=0 r=0 "Rectract" +MSG_RESTORE_FAILSAFE c=0 r=0 "Restore failsafe" +MSG_SD_NOT_PRINTING c=0 r=0 "Not SD printing" +MSG_SERIAL_ERROR_MENU_STRUCTURE c=0 r=0 "Error in menu structure" +MSG_SET_HOME_OFFSETS c=0 r=0 "Set home offsets" +MSG_SET_ORIGIN c=0 r=0 "Set origin" +MSG_STEPPER_TIMER_OVERFLOW_ERROR c=20 r=4 "Error - stepper timer overflow" +MSG_STORE_EPROM c=0 r=0 "Store memory" +MSG_SWITCH_PS_OFF c=0 r=0 "Switch power off" +MSG_SWITCH_PS_ON c=0 r=0 "Switch power on" +MSG_TAKE_EFFECT c=20 r=0 " for take effect" +MSG_USB_PRINTING c=0 r=0 "USB printing " +MSG_VOLUMETRIC c=0 r=0 "Filament" +MSG_VOLUMETRIC_ENABLED c=0 r=0 "E in mm3" diff --git a/lang_upgrade/msgs_en_used_more.txt b/lang_upgrade/msgs_en_used_more.txt new file mode 100644 index 00000000..f205db08 --- /dev/null +++ b/lang_upgrade/msgs_en_used_more.txt @@ -0,0 +1,96 @@ +MSG_ALL c=19 r=1 "All" +MSG_AUTO_HOME c=0 r=0 "Auto home" +MSG_AUTO_MODE_ON c=0 r=0 "Mode [auto power]" +MSG_BABYSTEP_Z c=0 r=0 "Live adjust Z" +MSG_BABYSTEP_Z_NOT_SET c=20 r=12 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +MSG_BED c=0 r=0 "Bed" +MSG_BED_DONE c=0 r=0 "Bed done" +MSG_BED_HEATING c=0 r=0 "Bed Heating" +MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 "XYZ calibration failed. Please consult the manual." +MSG_CALIBRATE_Z_AUTO c=20 r=2 "Calibrating Z" +MSG_CARD_MENU c=0 r=0 "Print from SD" +MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." +MSG_COOLDOWN c=0 r=0 "Cooldown" +MSG_CRASH_DETECTED c=20 r=1 "Crash detected." +MSG_CRASHDETECT_NA c=0 r=0 "Crash det. [N/A]" +MSG_CRASHDETECT_OFF c=0 r=0 "Crash det. [off]" +MSG_CRASHDETECT_ON c=0 r=0 "Crash det. [on]" +MSG_ENDSTOP_HIT c=0 r=0 "TRIGGERED" +MSG_ENDSTOP_OPEN c=0 r=0 "open" +MSG_ENDSTOPS_HIT c=0 r=0 "endstops hit: " +MSG_Enqueing c=0 r=0 "enqueing \"" +MSG_ERR_STOPPED c=0 r=0 "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +MSG_ERROR c=0 r=0 "ERROR:" +MSG_EXTRUDER c=17 r=1 "Extruder" +MSG_FAN_SPEED c=14 r=0 "Fan speed" +MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" +MSG_FILAMENT_LOADING_T0 c=20 r=4 "Insert filament into extruder 1. Click when done." +MSG_FILAMENT_LOADING_T1 c=20 r=4 "Insert filament into extruder 2. Click when done." +MSG_FILAMENT_LOADING_T2 c=20 r=4 "Insert filament into extruder 3. Click when done." +MSG_FILAMENT_LOADING_T3 c=20 r=4 "Insert filament into extruder 4. Click when done." +MSG_FILAMENTCHANGE c=0 r=0 "Change filament" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 "Searching bed calibration point" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 " of 4" +MSG_FINISHING_MOVEMENTS c=20 r=1 "Finishing movements" +MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +MSG_FSENS_AUTOLOAD_NA c=17 r=1 "F. autoload [N/A]" +MSG_FSENSOR_OFF c=0 r=0 "Fil. sensor [off]" +MSG_FSENSOR_ON c=0 r=0 "Fil. sensor [on]" +MSG_HEATING c=0 r=0 "Heating" +MSG_HEATING_COMPLETE c=20 r=0 "Heating done." +MSG_HOMEYZ c=0 r=0 "Calibrate Z" +MSG_CHOOSE_EXTRUDER c=20 r=1 "Choose extruder:" +MSG_LOAD_FILAMENT c=17 r=0 "Load filament" +MSG_LOADING_FILAMENT c=20 r=0 "Loading filament" +MSG_M117_V2_CALIBRATION c=25 r=1 "M117 First layer cal." +MSG_MAIN c=0 r=0 "Main" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 "Measuring reference height of calibration point" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 " of 9" +MSG_MENU_CALIBRATION c=0 r=0 "Calibration" +MSG_NO c=0 r=0 "No" +MSG_NOZZLE c=0 r=0 "Nozzle" +MSG_OK c=0 r=0 "ok" +MSG_PAPER c=20 r=8 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +MSG_PLACE_STEEL_SHEET c=20 r=4 "Please place steel sheet on heatbed." +MSG_PLEASE_WAIT c=20 r=0 "Please wait" +MSG_POWERUP c=0 r=0 "PowerUp" +MSG_PREHEAT_NOZZLE c=20 r=0 "Preheat the nozzle!" +MSG_PRESS_TO_UNLOAD c=20 r=4 "Please press the knob to unload filament" +MSG_PRINT_ABORTED c=20 r=0 "Print aborted" +MSG_PULL_OUT_FILAMENT c=20 r=4 "Please pull out filament immediately" +MSG_RECOVER_PRINT c=20 r=2 "Blackout occurred. Recover print?" +MSG_REFRESH c=0 r=0 "\xF8" "Refresh" +MSG_REMOVE_STEEL_SHEET c=20 r=4 "Please remove steel sheet from heatbed." +MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 "error writing to file" +MSG_SD_OPEN_FILE_FAIL c=0 r=0 "open failed, File: " +MSG_SD_WORKDIR_FAIL c=0 r=0 "workDir open failed" +MSG_SELFTEST_COOLING_FAN c=20 r=0 "Front print fan?" +MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 "Left hotend fan?" +MSG_SELFTEST_FAILED c=20 r=0 "Selftest failed " +MSG_SELFTEST_FAN c=20 r=0 "Fan test" +MSG_SELFTEST_FAN_NO c=19 r=0 "Not spinning" +MSG_SELFTEST_FAN_YES c=19 r=0 "Spinning" +MSG_SELFTEST_CHECK_BED c=20 r=0 "Checking bed " +MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 "Checking sensors " +MSG_SELFTEST_MOTOR c=0 r=0 "Motor" +MSG_SELFTEST_WIRINGERROR c=0 r=0 "Wiring error" +MSG_SETTINGS c=0 r=0 "Settings" +MSG_SILENT_MODE_OFF c=0 r=0 "Mode [high power]" +MSG_SILENT_MODE_ON c=0 r=0 "Mode [silent]" +MSG_STEALTH_MODE_OFF c=0 r=0 "Mode [Normal]" +MSG_STEALTH_MODE_ON c=0 r=0 "Mode [Stealth]" +MSG_STEEL_SHEET_CHECK c=20 r=2 "Is steel sheet on heatbed?" +MSG_STOP_PRINT c=0 r=0 "Stop print" +MSG_STOPPED c=0 r=0 "STOPPED. " +MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " +MSG_TEMP_CALIBRATION_DONE c=20 r=12 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +MSG_UNLOAD_FILAMENT c=17 r=0 "Unload filament" +MSG_UNLOADING_FILAMENT c=20 r=1 "Unloading filament" +MSG_WATCH c=0 r=0 "Info screen" +MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +MSG_WIZARD_DONE c=20 r=8 "All is done. Happy printing!" +MSG_WIZARD_HEATING c=20 r=3 "Preheating nozzle. Please wait." +MSG_WIZARD_QUIT c=20 r=8 "You can always resume the Wizard from Calibration -> Wizard." +MSG_YES c=0 r=0 "Yes" +WELCOME_MSG c=20 r=0 CUSTOM_MENDEL_NAME " ready." diff --git a/lang_upgrade/msgs_en_used_once.txt b/lang_upgrade/msgs_en_used_once.txt new file mode 100644 index 00000000..05516ec0 --- /dev/null +++ b/lang_upgrade/msgs_en_used_once.txt @@ -0,0 +1,247 @@ +MSG_ADJUSTZ c=0 r=0 "Auto adjust Z?" +MSG_AUTOLOAD_FILAMENT c=17 r=0 "AutoLoad filament" +MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." +MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." +MSG_BABYSTEPPING_X c=0 r=0 "Babystepping X" +MSG_BABYSTEPPING_Y c=0 r=0 "Babystepping Y" +MSG_BABYSTEPPING_Z c=20 r=0 "Adjusting Z" +MSG_BED_CORRECTION_FRONT c=14 r=1 "Front side[um]" +MSG_BED_CORRECTION_LEFT c=14 r=1 "Left side [um]" +MSG_BED_CORRECTION_MENU c=0 r=0 "Bed level correct" +MSG_BED_CORRECTION_REAR c=14 r=1 "Rear side [um]" +MSG_BED_CORRECTION_RESET c=0 r=0 "Reset" +MSG_BED_CORRECTION_RIGHT c=14 r=1 "Right side[um]" +MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 "Heating disabled by safety timer." +MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 "Bed leveling failed. Sensor triggered too high. Waiting for reset." +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration failed. Front calibration points not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 "XYZ calibration failed. Left front calibration point not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration failed. Right front calibration point not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 "XYZ calibration failed. Bed calibration point was not found." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 "XYZ calibration all right. Skew will be corrected automatically." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration compromised. Front calibration points not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 "XYZ calibration compromised. Left front calibration point not reachable." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration compromised. Right front calibration point not reachable." +MSG_BEGIN_FILE_LIST c=0 r=0 "Begin file list" +MSG_CALIBRATE_BED c=0 r=0 "Calibrate XYZ" +MSG_CALIBRATE_BED_RESET c=0 r=0 "Reset XYZ calibr." +MSG_CALIBRATE_E c=20 r=1 "Calibrate E" +MSG_CALIBRATE_PINDA c=17 r=1 "Calibrate" +MSG_CALIBRATION_PINDA_MENU c=17 r=1 "Temp. calibration" +MSG_CLEAN_NOZZLE_E c=20 r=8 "E calibration finished. Please clean the nozzle. Click when done." +MSG_CNG_SDCARD c=0 r=0 "Change SD card" +MSG_CONFIGURATION_VER c=0 r=0 " Last Updated: " +MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 "Are left and right Z~carriages all up?" +MSG_CORRECTLY c=20 r=0 "Changed correctly?" +MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +MSG_CURRENT c=19 r=1 "Current" +MSG_DATE c=17 r=1 "Date:" +MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 "Old settings found. Default PID, Esteps etc. will be set." +MSG_DISABLE_STEPPERS c=0 r=0 "Disable steppers" +MSG_DWELL c=0 r=0 "Sleep..." +MSG_E_CAL_KNOB c=20 r=8 "Rotate knob until mark reaches extruder body. Click when done." +MSG_END_FILE_LIST c=0 r=0 "End file list" +MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 " cold extrusion prevented" +MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 "checksum mismatch, Last Line: " +MSG_ERR_KILLED c=0 r=0 "Printer halted. kill() called!" +MSG_ERR_NO_CHECKSUM c=0 r=0 "No Checksum with line number, Last Line: " +MSG_ERR_NO_THERMISTORS c=0 r=0 "No thermistors - no temperature" +MSG_EXTRUDER_1 c=17 r=1 "Extruder 1" +MSG_EXTRUDER_2 c=17 r=1 "Extruder 2" +MSG_EXTRUDER_3 c=17 r=1 "Extruder 3" +MSG_EXTRUDER_4 c=17 r=1 "Extruder 4" +MSG_EXTRUDER_CORRECTION c=9 r=0 "E-correct" +MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 " [off" +MSG_FACTOR c=0 r=0 " \002 Fact" +MSG_FANS_CHECK_OFF c=17 r=1 "Fans check [off]" +MSG_FANS_CHECK_ON c=17 r=1 "Fans check [on]" +MSG_FILAMENT_SENSOR c=20 r=0 "Filament sensor" +MSG_FILE_CNT c=20 r=4 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +MSG_FILE_INCOMPLETE c=20 r=2 "File incomplete. Continue anyway?" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 "Iteration " +MSG_FLOW c=0 r=0 "Flow" +MSG_FORCE_SELFTEST c=20 r=8 "Selftest will be run to calibrate accurate sensorless rehoming." +MSG_FREE_MEMORY c=0 r=0 " Free Memory: " +MSG_FSENS_AUTOLOAD_OFF c=17 r=1 "F. autoload [off]" +MSG_FSENS_AUTOLOAD_ON c=17 r=1 "F. autoload [on]" +MSG_FSENS_NOT_RESPONDING c=20 r=4 "ERROR: Filament sensor is not responding, please check connection." +MSG_FSENSOR_NA c=0 r=0 "Fil. sensor [N/A]" +MSG_FW_VERSION_ALPHA c=20 r=8 "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +MSG_FW_VERSION_BETA c=20 r=8 "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +MSG_FW_VERSION_UNKNOWN c=20 r=8 "WARNING: This is an unofficial, unsupported build. Use at your own risk!" +MSG_HOMEYZ_DONE c=0 r=0 "Calibration done" +MSG_HOMEYZ_PROGRESS c=0 r=0 "Calibrating Z" +MSG_CHANGE_EXTR c=20 r=1 "Change extruder" +MSG_CHANGE_SUCCESS c=0 r=0 "Change success!" +MSG_CHANGED_BOTH c=20 r=4 "Warning: both printer type and motherboard type changed." +MSG_CHANGED_MOTHERBOARD c=20 r=4 "Warning: motherboard type changed." +MSG_CHANGED_PRINTER c=20 r=4 "Warning: printer type changed." +MSG_CHANGING_FILAMENT c=20 r=0 "Changing filament!" +MSG_CHECK_IDLER c=20 r=4 "Please open idler and remove filament manually." +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 "Improving bed calibration point" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 " of 4" +MSG_INFO_EXTRUDER c=15 r=1 "Extruder info" +MSG_INFO_NOZZLE_FAN c=11 r=1 "Nozzle FAN:" +MSG_INFO_PRINT_FAN c=11 r=1 "Print FAN: " +MSG_INIT_SDCARD c=0 r=0 "Init. SD card" +MSG_INSERT_FILAMENT c=20 r=0 "Insert filament" +MSG_KILLED c=0 r=0 "KILLED. " +MSG_LANGUAGE_SELECT c=0 r=0 "Select language" +MSG_LEFT c=12 r=1 "Left:" +MSG_LOAD_ALL c=0 r=0 "Load all" +MSG_LOAD_FILAMENT_1 c=17 r=0 "Load filament 1" +MSG_LOAD_FILAMENT_2 c=17 r=0 "Load filament 2" +MSG_LOAD_FILAMENT_3 c=17 r=0 "Load filament 3" +MSG_LOAD_FILAMENT_4 c=17 r=0 "Load filament 4" +MSG_LOADING_COLOR c=0 r=0 "Loading color" +MSG_LOOSE_PULLEY c=20 r=1 "Loose pulley" +MSG_M104_INVALID_EXTRUDER c=0 r=0 "M104 Invalid extruder " +MSG_M105_INVALID_EXTRUDER c=0 r=0 "M105 Invalid extruder " +MSG_M109_INVALID_EXTRUDER c=0 r=0 "M109 Invalid extruder " +MSG_M119_REPORT c=0 r=0 "Reporting endstop status" +MSG_M200_INVALID_EXTRUDER c=0 r=0 "M200 Invalid extruder " +MSG_M218_INVALID_EXTRUDER c=0 r=0 "M218 Invalid extruder " +MSG_M221_INVALID_EXTRUDER c=0 r=0 "M221 Invalid extruder " +MSG_MARK_FIL c=20 r=8 "Mark filament 100mm from extruder body. Click when done." +MSG_MAX c=0 r=0 " \002 Max" +MSG_MEASURED_OFFSET c=0 r=0 "[0;0] point offset" +MSG_MEASURED_SKEW c=15 r=1 "Measured skew:" +MSG_MENU_BELT_STATUS c=15 r=1 "Belt status" +MSG_MENU_TEMPERATURES c=15 r=1 "Temperatures" +MSG_MENU_VOLTAGES c=15 r=1 "Voltages" +MSG_MESH_BED_LEVELING c=0 r=0 "Mesh Bed Leveling" +MSG_MIN c=0 r=0 " \002 Min" +MSG_MOVE_AXIS c=0 r=0 "Move axis" +MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +MSG_MOVE_E c=0 r=0 "Extruder" +MSG_MOVE_X c=0 r=0 "Move X" +MSG_MOVE_Y c=0 r=0 "Move Y" +MSG_MOVE_Z c=0 r=0 "Move Z" +MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 "New firmware version available:" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 "Please upgrade." +MSG_NO_CARD c=0 r=0 "No SD card" +MSG_NO_MOVE c=0 r=0 "No move." +MSG_NOT_COLOR c=0 r=0 "Color not correct" +MSG_NOT_LOADED c=19 r=0 "Filament not loaded" +MSG_NOZZLE1 c=0 r=0 "Nozzle2" +MSG_NOZZLE2 c=0 r=0 "Nozzle3" +MSG_PAUSE_PRINT c=0 r=0 "Pause print" +MSG_PICK_Z c=0 r=0 "Pick print" +MSG_PID_EXTRUDER c=17 r=1 "PID calibration" +MSG_PID_FINISHED c=20 r=1 "PID cal. finished" +MSG_PID_RUNNING c=20 r=1 "PID cal. " +MSG_PINDA_NOT_CALIBRATED c=20 r=4 "Temperature calibration has not been run yet" +MSG_PINDA_PREHEAT c=20 r=1 "PINDA Heating" +MSG_PLA_FILAMENT_LOADED c=20 r=2 "Is PLA filament loaded?" +MSG_PLANNER_BUFFER_BYTES c=0 r=0 " PlannerBufferBytes: " +MSG_PLEASE_LOAD_PLA c=20 r=4 "Please load PLA filament first." +MSG_PREHEAT c=0 r=0 "Preheat" +MSG_PREPARE_FILAMENT c=20 r=1 "Prepare new filament" +MSG_PRESS c=20 r=0 "and press the knob" +MSG_PRESS_TO_PREHEAT c=20 r=4 "Press knob to preheat nozzle and continue." +MSG_PRINT_PAUSED c=20 r=1 "Print paused" +MSG_PRINTER_DISCONNECTED c=20 r=1 "Printer disconnected" +MSG_PRUSA3D c=0 r=0 "prusa3d.com" +MSG_PRUSA3D_FORUM c=0 r=0 "forum.prusa3d.com" +MSG_PRUSA3D_HOWTO c=0 r=0 "howto.prusa3d.com" +MSG_RECOVERING_PRINT c=20 r=1 "Recovering print " +MSG_RESEND c=0 r=0 "Resend: " +MSG_RESUME_PRINT c=0 r=0 "Resume print" +MSG_RESUMING c=0 r=0 "Resuming print" +MSG_RESUMING_PRINT c=20 r=1 "Resuming print" +MSG_RIGHT c=12 r=1 "Right:" +MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 "Cannot enter subdir: " +MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 "Cannot open subdir" +MSG_SD_CARD_OK c=0 r=0 "SD card ok" +MSG_SD_FILE_OPENED c=0 r=0 "File opened: " +MSG_SD_FILE_SELECTED c=0 r=0 "File selected" +MSG_SD_INIT_FAIL c=0 r=0 "SD init fail" +MSG_SD_INSERTED c=0 r=0 "Card inserted" +MSG_SD_OPENROOT_FAIL c=0 r=0 "openRoot failed" +MSG_SD_PRINTING_BYTE c=0 r=0 "SD printing byte " +MSG_SD_REMOVED c=0 r=0 "Card removed" +MSG_SD_VOL_INIT_FAIL c=0 r=0 "volume.init failed" +MSG_SD_WRITE_TO_FILE c=0 r=0 "Writing to file: " +MSG_SECOND_SERIAL_OFF c=17 r=1 "RPi port [off]" +MSG_SECOND_SERIAL_ON c=17 r=1 "RPi port [on]" +MSG_SELFTEST c=0 r=0 "Selftest " +MSG_SELFTEST_AXIS c=0 r=0 "Axis" +MSG_SELFTEST_AXIS_LENGTH c=0 r=0 "Axis length" +MSG_SELFTEST_BEDHEATER c=0 r=0 "Bed / Heater" +MSG_SELFTEST_ENDSTOP c=0 r=0 "Endstop" +MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 "Endstop not hit" +MSG_SELFTEST_ENDSTOPS c=0 r=0 "Endstops" +MSG_SELFTEST_ERROR c=0 r=0 "Selftest error !" +MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 "Extruder fan:" +MSG_SELFTEST_FANS c=0 r=0 "Front/left fans" +MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 "Filament sensor:" +MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 "Heater/Thermistor" +MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 "All correct " +MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 "Checking endstops" +MSG_SELFTEST_CHECK_HOTEND c=20 r=0 "Checking hotend " +MSG_SELFTEST_CHECK_X c=20 r=0 "Checking X axis " +MSG_SELFTEST_CHECK_Y c=20 r=0 "Checking Y axis " +MSG_SELFTEST_CHECK_Z c=20 r=0 "Checking Z axis " +MSG_SELFTEST_NOTCONNECTED c=0 r=0 "Not connected" +MSG_SELFTEST_OK c=0 r=0 "Self test OK" +MSG_SELFTEST_PLEASECHECK c=0 r=0 "Please check :" +MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 "Print fan:" +MSG_SELFTEST_START c=20 r=0 "Self test start " +MSG_SELFTEST_SWAPPED c=0 r=0 "Swapped" +MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" +MSG_SEVERE_SKEW c=15 r=1 "Severe skew:" +MSG_SHOW_END_STOPS c=17 r=1 "Show end stops" +MSG_SLIGHT_SKEW c=15 r=1 "Slight skew:" +MSG_SORT_ALPHA c=17 r=1 "Sort: [Alphabet]" +MSG_SORT_NONE c=17 r=1 "Sort: [None]" +MSG_SORT_TIME c=17 r=1 "Sort: [Time]" +MSG_SORTING c=20 r=1 "Sorting files" +MSG_SPEED c=0 r=0 "Speed" +MSG_STACK_ERROR c=20 r=4 "Error - static memory has been overwritten" +MSG_STATISTICS c=0 r=0 "Statistics " +MSG_STATS_FILAMENTUSED c=20 r=0 "Filament used: " +MSG_STATS_PRINTTIME c=20 r=0 "Print time: " +MSG_STATS_TOTALFILAMENT c=20 r=0 "Total filament :" +MSG_STATS_TOTALPRINTTIME c=20 r=0 "Total print time :" +MSG_STEPPER_TOO_HIGH c=0 r=0 "Steprate too high: " +MSG_SUPPORT c=0 r=0 "Support" +MSG_TEMP_CAL_FAILED c=20 r=8 "Temperature calibration failed" +MSG_TEMP_CAL_WARNING c=20 r=4 "Stable ambient temperature 21-26C is needed a rigid stand is required." +MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" +MSG_TEMP_CALIBRATION_ON c=20 r=1 "Temp. cal. [on]" +MSG_TEMPERATURE c=0 r=0 "Temperature" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 "SD card [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 "SD card [FlshAir]" +MSG_TUNE c=0 r=0 "Tune" +MSG_UNLOAD_ALL c=0 r=0 "Unload all" +MSG_UNLOAD_FILAMENT_1 c=17 r=0 "Unload filament 1" +MSG_UNLOAD_FILAMENT_2 c=17 r=0 "Unload filament 2" +MSG_UNLOAD_FILAMENT_3 c=17 r=0 "Unload filament 3" +MSG_UNLOAD_FILAMENT_4 c=17 r=0 "Unload filament 4" +MSG_UNLOAD_SUCCESSFUL c=20 r=2 "Was filament unload successful?" +MSG_USED c=19 r=1 "Used during print" +MSG_USERWAIT c=0 r=0 "Wait for user..." +MSG_V2_CALIBRATION c=17 r=1 "First layer cal." +MSG_WAITING_TEMP c=20 r=3 "Waiting for nozzle and bed cooling" +MSG_WAITING_TEMP_PINDA c=20 r=3 "Waiting for PINDA probe cooling" +MSG_WIZARD c=17 r=1 "Wizard" +MSG_WIZARD_CLEAN_HEATBED c=20 r=8 "Please clean heatbed and then press the knob." +MSG_WIZARD_FILAMENT_LOADED c=20 r=2 "Is filament loaded?" +MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 "Please load PLA filament and then resume Wizard by rebooting the printer." +MSG_WIZARD_LOAD_FILAMENT c=20 r=8 "Please insert PLA filament to the extruder, then press knob to load it." +MSG_WIZARD_PLA_FILAMENT c=20 r=2 "Is it PLA filament?" +MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 "Do you want to repeat last step to readjust distance between nozzle and heatbed?" +MSG_WIZARD_RERUN c=20 r=7 "Running Wizard will delete current calibration results and start from the beginning. Continue?" +MSG_WIZARD_SELFTEST c=20 r=8 "First, I will run the selftest to check most common assembly problems." +MSG_WIZARD_V2_CAL c=20 r=8 "Now I will calibrate distance between tip of the nozzle and heatbed surface." +MSG_WIZARD_V2_CAL_2 c=20 r=12 "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +MSG_WIZARD_WELCOME c=20 r=7 "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +MSG_WIZARD_WILL_PREHEAT c=20 r=4 "Now I will preheat nozzle for PLA." +MSG_WIZARD_XYZ_CAL c=20 r=8 "I will run xyz calibration now. It will take approx. 12 mins." +MSG_WIZARD_Z_CAL c=20 r=8 "I will run z calibration now." +MSG_XYZ_DETAILS c=19 r=1 "XYZ cal. details" +MSG_Y_DISTANCE_FROM_MIN c=20 r=1 "Y distance from min:" diff --git a/lang_upgrade/msgs_es.txt b/lang_upgrade/msgs_es.txt new file mode 100644 index 00000000..22de488a --- /dev/null +++ b/lang_upgrade/msgs_es.txt @@ -0,0 +1,289 @@ +MSG_ADJUSTZ "Ajustar Eje Z" +MSG_ALL "Todos" +MSG_AUTO_HOME "Llevar al origen" +MSG_BABYSTEP_X "Babystep X" +MSG_BABYSTEP_Y "Babystep Y" +MSG_BABYSTEP_Z "Micropaso Eje Z" +MSG_BABYSTEP_Z_NOT_SET "Distancia entre la punta del nozzle y la superficie de la heatbed aun no fijada. Por favor siga el manual, capitulo First steps, First layer calibration." +MSG_BABYSTEPPING_X "Babystepping X" +MSG_BABYSTEPPING_Y "Babystepping Y" +MSG_BABYSTEPPING_Z "Ajustar Z" +MSG_BED "Heatbed" +MSG_BED_CORRECTION_FRONT "Frontal [um]" +MSG_BED_CORRECTION_LEFT "Izquierda [um]" +MSG_BED_CORRECTION_MENU "Corr. de la cama" +MSG_BED_CORRECTION_REAR "Trasera [um]" +MSG_BED_CORRECTION_RESET "Reset" +MSG_BED_CORRECTION_RIGHT "Derecha [um]" +MSG_BED_DONE "Base preparada" +MSG_BED_HEATING "Calentando Base" +MSG_BED_LEVELING_FAILED_POINT_HIGH "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset." +MSG_BED_LEVELING_FAILED_POINT_LOW "Nivelacion fallada. Sensor no funciona. Escombros en nozzle? Esperando reset." +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Calibracion XYZ fallada. Puntos frontales no alcanzables." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Calibracion XYZ fallada. Punto frontal izquierdo no alcanzable." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Calibracion XYZ fallad. Punto frontal derecho no alcanzable." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibracion XYZ fallada. Consulta el manual por favor." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibracion XYZ fallada. Puntos de calibracion en heatbed no encontrados." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Calibracion XYZ correcta. La inclinacion se corregira automaticamente." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!" +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "Calibrazion XYZ comprometida. Puntos frontales no alcanzables." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "Calibrazion XYZ comprometida. Punto frontal izquierdo no alcanzable." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable." +MSG_BEGIN_FILE_LIST "Begin file list" +MSG_CALIBRATE_BED "Calibra XYZ" +MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." +MSG_CALIBRATE_E "Calibrar E" +MSG_CALIBRATE_PINDA "Calibrar" +MSG_CALIBRATION_PINDA_MENU "Calibracion temp." +MSG_CARD_MENU "Menu tarjeta SD" +MSG_CLEAN_NOZZLE_E "E calibrado. Limpia nozzle. Haz clic una vez terminado." +MSG_CNG_SDCARD "Change SD card" +MSG_CONFIGURATION_VER " Last Updated: " +MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Carros Z izq./der. estan arriba maximo?" +MSG_CONFIRM_NOZZLE_CLEAN "Limpia nozzle para calibracion. Click cuando acabes." +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamentos ajustados. Limpia nozzle para calibracion. Haz clic una vez terminado." +MSG_CONTROL "Control" +MSG_COOLDOWN "Enfriar" +MSG_CORRECTLY "Cambiado correct.?" +MSG_CURRENT "Actual" +MSG_DISABLE_STEPPERS "Apagar motores" +MSG_DWELL "En espera" +MSG_E_CAL_KNOB "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haz clic una vez terminado." +MSG_END_FILE_LIST "End file list" +MSG_ENDSTOP_HIT "TRIGGERED" +MSG_ENDSTOP_OPEN "open" +MSG_ENDSTOPS_HIT "endstops hit: " +MSG_Enqueing "enqueing \"" +MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" +MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " +MSG_ERR_KILLED "Printer halted. kill() called!" +MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " +MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" +MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +MSG_ERROR "ERROR:" +MSG_EXTRUDER "Extrusor" +MSG_EXTRUDER_1 "Extrusor 1" +MSG_EXTRUDER_2 "Extrusor 2" +MSG_EXTRUDER_3 "Extrusor 3" +MSG_EXTRUDER_4 "Extrusor 4" +MSG_FACTOR " \002 Fact" +MSG_FAN_SPEED "Velocidad Vent." +MSG_FIL_ADJUSTING "Ajustando filamentos. Espera por favor." +MSG_FILAMENT_CLEAN "Es el nuevo color nitido?" +MSG_FILAMENT_LOADING_T0 "Insertar filamento en el extrusor 1. Haz clic una vez terminado." +MSG_FILAMENT_LOADING_T1 "Insertar filamento en el extrusor 2. Haz clic una vez terminado." +MSG_FILAMENT_LOADING_T2 "Insertar filamento en el extrusor 3. Haz clic una vez terminado." +MSG_FILAMENT_LOADING_T3 "Insertar filamento en el extrusor 4. Haz clic una vez terminado." +MSG_FILAMENTCHANGE "Cambiar filamento" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Reiteracion " +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Buscando punto de calibracion heatbed" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " de 4" +MSG_FINISHING_MOVEMENTS "Term. movimientos" +MSG_FLOW "Flujo" +MSG_FLOW0 "Flow 0" +MSG_FLOW1 "Flow 1" +MSG_FLOW2 "Flow 2" +MSG_FOLLOW_CALIBRATION_FLOW "Impresora no esta calibrada todavia. Por favor usa el manual, capitulo First steps, Calibration flow." +MSG_FREE_MEMORY " Free Memory: " +MSG_HEATING "Calentando..." +MSG_HEATING_COMPLETE "Calentamiento final." +MSG_HOMEYZ "Calibrar Z" +MSG_HOMEYZ_DONE "Calibracion OK" +MSG_HOMEYZ_PROGRESS "Calibrando Z" +MSG_CHANGE_EXTR "Cambiar extrusor." +MSG_CHANGE_SUCCESS "Cambio correcto" +MSG_CHANGING_FILAMENT "Cambiando filamento" +MSG_CHOOSE_EXTRUDER "Elegir extrusor:" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Mejorando punto de calibracion heatbed" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " de 4" +MSG_INIT_SDCARD "Init. SD card" +MSG_INSERT_FILAMENT "Introducir filamento" +MSG_KILLED "PARADA DE EMERGENCIA" +MSG_LANGUAGE_NAME "Espanol" +MSG_LANGUAGE_SELECT "Cambiae el idioma" +MSG_LOAD_ALL "Intr. todos fil." +MSG_LOAD_EPROM "Load memory" +MSG_LOAD_FILAMENT "Introducir filam." +MSG_LOAD_FILAMENT_1 "Introducir fil. 1" +MSG_LOAD_FILAMENT_2 "Introducir fil. 2" +MSG_LOAD_FILAMENT_3 "Introducir fil. 3" +MSG_LOAD_FILAMENT_4 "Introducir fil. 4" +MSG_LOADING_COLOR "Cambiando color" +MSG_LOADING_FILAMENT "Introduciendo filam." +MSG_LOOSE_PULLEY "Polea suelta" +MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " +MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " +MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " +MSG_M117_V2_CALIBRATION "M117 Cal. primera cap." +MSG_M119_REPORT "Reporting endstop status" +MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " +MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " +MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +MSG_MAIN "Menu principal" +MSG_MARK_FIL "Marque el filamento 100 mm por encima del final del extrusor. Haz clic una vez terminado." +MSG_MAX " \002 Max" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Midiendo altura del punto de calibracion" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " de 9" +MSG_MENU_CALIBRATION "Calibracion" +MSG_MESH_BED_LEVELING "Mesh Bed Leveling" +MSG_MIN " \002 Min" +MSG_MOTION "Motion" +MSG_MOVE_AXIS "Mover ejes" +MSG_MOVE_CARRIAGE_TO_THE_TOP "Calibrando XYZ. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Calibrando Z. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic." +MSG_MOVE_E "Extruir" +MSG_MOVE_X "Mover X" +MSG_MOVE_Y "Mover Y" +MSG_MOVE_Z "Mover Z" +MSG_NEW_FIRMWARE_AVAILABLE "Nuevo firmware disponible:" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Actualizar por favor" +MSG_NO "No" +MSG_NO_CARD "No hay tarjeta SD" +MSG_NO_MOVE "Sin movimiento" +MSG_NOT_COLOR "Color no homogeneo" +MSG_NOT_LOADED "Fil. no introducido" +MSG_NOZZLE "Nozzle" +MSG_NOZZLE1 "Nozzle2" +MSG_NOZZLE2 "Nozzle3" +MSG_OK "ok" +MSG_PAPER "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente." +MSG_PAUSE_PRINT "Pausar impresion" +MSG_PICK_Z "Esc. Modelo Adecuado" +MSG_PID_EXTRUDER "Calibracion PID" +MSG_PID_FINISHED "Cal. PID terminada" +MSG_PID_RUNNING "Cal. PID " +MSG_PINDA_NOT_CALIBRATED "La temperatura de calibracion no ha sido ajustada" +MSG_PINDA_PREHEAT "Calentando PINDA" +MSG_PLA_FILAMENT_LOADED "Esta el filamento PLA cargado?" +MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +MSG_PLEASE_LOAD_PLA "Carga el filamento PLA primero por favor." +MSG_PLEASE_WAIT "Por Favor Esperar" +MSG_POWERUP "PowerUp" +MSG_PREHEAT "Precalentar" +MSG_PREHEAT_NOZZLE "Precalentar extrusor" +MSG_PREPARE_FILAMENT "Preparar filamento" +MSG_PREPARE_FILAMENT "Preparar filamento" +MSG_PRESS "Haz clic" +MSG_PRINT_ABORTED "Impresion cancelada" +MSG_PRINT_PAUSED "Impresion en pausa" +MSG_PRUSA3D "prusa3d.com" +MSG_PRUSA3D_FORUM "forum.prusa3d.com" +MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +MSG_REBOOT "Reiniciar impresora" +MSG_RECTRACT "Rectract" +MSG_REFRESH "\xF8" "Refresh" +MSG_RESEND "Resend: " +MSG_RESTORE_FAILSAFE "Restore failsafe" +MSG_RESUME_PRINT "Reanudar impres." +MSG_RESUMING "Resumiendo impresion" +MSG_RESUMING_PRINT "Reanudar impresion" +MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " +MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir" +MSG_SD_CARD_OK "SD card ok" +MSG_SD_ERR_WRITE_TO_FILE "error writing to file" +MSG_SD_FILE_OPENED "File opened: " +MSG_SD_FILE_SELECTED "File selected" +MSG_SD_INIT_FAIL "SD init fail" +MSG_SD_INSERTED "Tarjeta insertada" +MSG_SD_NOT_PRINTING "Not SD printing" +MSG_SD_OPEN_FILE_FAIL "open failed, File: " +MSG_SD_OPENROOT_FAIL "openRoot failed" +MSG_SD_PRINTING_BYTE "SD printing byte " +MSG_SD_REMOVED "Tarjeta retirada" +MSG_SD_VOL_INIT_FAIL "volume.init failed" +MSG_SD_WORKDIR_FAIL "workDir open failed" +MSG_SD_WRITE_TO_FILE "Writing to file: " +MSG_SELFTEST "Selftest" +MSG_SELFTEST_BEDHEATER "Heatbed" +MSG_SELFTEST_COOLING_FAN "Vent. frontal?" +MSG_SELFTEST_ENDSTOP "Tope final" +MSG_SELFTEST_ENDSTOP_NOTHIT "Tope no alcanzado" +MSG_SELFTEST_ENDSTOPS "Topes finales" +MSG_SELFTEST_ERROR "Autotest error!" +MSG_SELFTEST_EXTRUDER_FAN "Vent. izquierdo?" +MSG_SELFTEST_FAILED "Fallo Selftest" +MSG_SELFTEST_FAN "Test ventiladores" +MSG_SELFTEST_FAN_NO "Ventilador no gira" +MSG_SELFTEST_FAN_YES "Ventilador gira" +MSG_SELFTEST_HEATERTHERMISTOR "Hotend" +MSG_SELFTEST_CHECK_ALLCORRECT "Todo bien" +MSG_SELFTEST_CHECK_BED "Control heatbed" +MSG_SELFTEST_CHECK_ENDSTOPS "Control topes" +MSG_SELFTEST_CHECK_HOTEND "Control hotend " +MSG_SELFTEST_CHECK_X "Control tope X" +MSG_SELFTEST_CHECK_Y "Control tope Y" +MSG_SELFTEST_CHECK_Z "Control tope Z" +MSG_SELFTEST_MOTOR "Motor" +MSG_SELFTEST_NOTCONNECTED "No hay conexion " +MSG_SELFTEST_OK "Self test OK" +MSG_SELFTEST_PLEASECHECK "Controla :" +MSG_SELFTEST_START "Inicio Selftest" +MSG_SELFTEST_WIRINGERROR "Error de conexion" +MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" +MSG_SET_HOME_OFFSETS "Set home offsets" +MSG_SET_ORIGIN "Set origin" +MSG_SET_TEMPERATURE "Establecer temp.:" +MSG_SETTINGS "Configuracion" +MSG_SHOW_END_STOPS "Ensena tope final" +MSG_SILENT_MODE_OFF "Modo [rend.pleno]" +MSG_SILENT_MODE_ON "Modo [silencio]" +MSG_SPEED "Velocidad" +MSG_STATISTICS "Estadisticas " +MSG_STATS_FILAMENTUSED "Filamento usado: " +MSG_STATS_PRINTTIME "Tiempo de imp.:" +MSG_STATS_TOTALFILAMENT "Filamento total:" +MSG_STATS_TOTALPRINTTIME "Tiempo total :" +MSG_STEPPER_TOO_HIGH "Steprate too high: " +MSG_STOP_PRINT "Detener impresion" +MSG_STOPPED "PARADA" +MSG_STORE_EPROM "Store memory" +MSG_SUPPORT "Soporte" +MSG_SWITCH_PS_OFF "Switch power off" +MSG_SWITCH_PS_ON "Switch power on" +MSG_TAKE_EFFECT " para aplicar cambios" +MSG_TEMP_CALIBRATION "Cal. temp. " +MSG_TEMP_CALIBRATION_DONE "Calibracon temperatura terminada. Haz clic para continuar." +MSG_TEMP_CALIBRATION_OFF "Cal. temp. [OFF]" +MSG_TEMP_CALIBRATION_ON "Cal. temp. [ON]" +MSG_TEMPERATURE "Temperatura" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +MSG_TUNE "Ajustar" +MSG_UNLOAD_ALL "Soltar todos fil." +MSG_UNLOAD_FILAMENT "Soltar filamento" +MSG_UNLOAD_FILAMENT_1 "Soltar fil. 1" +MSG_UNLOAD_FILAMENT_2 "Soltar fil. 2" +MSG_UNLOAD_FILAMENT_3 "Soltar fil. 3" +MSG_UNLOAD_FILAMENT_4 "Soltar fil. 4" +MSG_UNLOADING_FILAMENT "Soltando filamento" +MSG_USB_PRINTING "Impresion con USB " +MSG_USED "Usado en impresion" +MSG_USERWAIT "Esperando ordenes" +MSG_V2_CALIBRATION "Cal. primera cap." +MSG_VOLUMETRIC "Filament" +MSG_VOLUMETRIC_ENABLED "E in mm3" +MSG_WAITING_TEMP "Esperando enfriamiento de heatbed y extrusor." +MSG_WATCH "Monitorizar" +MSG_WIZARD "Wizard" +MSG_WIZARD_CALIBRATION_FAILED "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard" +MSG_WIZARD_CLEAN_HEATBED "Limpia la superficie de la heatbed, por favor, y haz clic" +MSG_WIZARD_DONE "Terminado! Feliz impresion!" +MSG_WIZARD_FILAMENT_LOADED "Esta el filamento cargado?" +MSG_WIZARD_HEATING "Precalentando nozzle. Espera por favor." +MSG_WIZARD_INSERT_CORRECT_FILAMENT "Carga filamento PLA, por favor, y reinicia la impresora para continuar con el Wizard" +MSG_WIZARD_LOAD_FILAMENT "Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo." +MSG_WIZARD_PLA_FILAMENT "Es el filamento PLA?" +MSG_WIZARD_QUIT "Siempre puedes acceder al asistente desde Calibracion -> Wizard" +MSG_WIZARD_REPEAT_V2_CAL "Quieres repetir el ultimo paso para reajustar la distancia nozzle-heatbed?" +MSG_WIZARD_RERUN "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?" +MSG_WIZARD_SELFTEST "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes." +MSG_WIZARD_V2_CAL "Voy a calibrar la distancia entre la punta del nozzle y la superficie de la heatbed." +MSG_WIZARD_V2_CAL_2 "Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el mando, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual." +MSG_WIZARD_WELCOME "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?" +MSG_WIZARD_WILL_PREHEAT "Voy a precalentar el nozzle para PLA ahora." +MSG_WIZARD_XYZ_CAL "Hare la calibracion XYZ. Tardara 12 min. aproximadamente." +MSG_WIZARD_Z_CAL "Voy a hacer Calibracion Z ahora." +MSG_YES "Si" +WELCOME_MSG CUSTOM_MENDEL_NAME " prep." diff --git a/lang_upgrade/msgs_it.txt b/lang_upgrade/msgs_it.txt new file mode 100644 index 00000000..f9e19583 --- /dev/null +++ b/lang_upgrade/msgs_it.txt @@ -0,0 +1,294 @@ +MSG_ADJUSTZ "Autoregolare Z?" +MSG_ALL "Tutti" +MSG_AUTO_HOME "Trova origine" +MSG_BABYSTEP_X "Babystep X" +MSG_BABYSTEP_Y "Babystep Y" +MSG_BABYSTEP_Z "Compensazione Z" +MSG_BABYSTEP_Z_NOT_SET "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration." +MSG_BABYSTEPPING_X "Babystepping X" +MSG_BABYSTEPPING_Y "Babystepping Y" +MSG_BABYSTEPPING_Z "Compensazione Z" +MSG_BED "Letto" +MSG_BED_CORRECTION_FRONT "Fronte [um]" +MSG_BED_CORRECTION_LEFT "Sinistra [um]" +MSG_BED_CORRECTION_MENU "Correz. liv.letto" +MSG_BED_CORRECTION_REAR "Retro [um]" +MSG_BED_CORRECTION_RESET "Reset" +MSG_BED_CORRECTION_RIGHT "Destra [um]" +MSG_BED_DONE "Piatto fatto." +MSG_BED_HEATING "Riscald. letto" +MSG_BED_LEVELING_FAILED_POINT_HIGH "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset." +MSG_BED_LEVELING_FAILED_POINT_LOW "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset." +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Calibrazione XYZ fallita. Punti anteriori non raggiungibili." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibrazione XYZ fallita. Si prega di consultare il manuale." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!" +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile." +MSG_BEGIN_FILE_LIST "Begin file list" +MSG_CALIBRATE_BED "Calibra XYZ" +MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." +MSG_CALIBRATE_E "Calibra E" +MSG_CALIBRATE_PINDA "Calibrare" +MSG_CALIBRATION_PINDA_MENU "Taratura temp." +MSG_CARD_MENU "Stampa da SD" +MSG_CLEAN_NOZZLE_E "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare." +MSG_CNG_SDCARD "Change SD card" +MSG_CONFIGURATION_VER " Last Updated: " +MSG_CONFIRM_CARRIAGE_AT_THE_TOP "I carrelli Z sin/des sono altezza max?" +MSG_CONFIRM_NOZZLE_CLEAN "Pulire l'ugello per la calibrazione, poi fare click." +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare." +MSG_COOLDOWN "Raffredda" +MSG_CORRECTLY "Cambiato corr.?" +MSG_CURRENT "Attuale" +MSG_DATE "Data" +MSG_DISABLE_STEPPERS "Disabilit motori" +MSG_DWELL "Sospensione..." +MSG_E_CAL_KNOB "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare." +MSG_END_FILE_LIST "End file list" +MSG_ENDSTOP_HIT "TRIGGERED" +MSG_ENDSTOP_OPEN "open" +MSG_ENDSTOPS_HIT "endstops hit: " +MSG_Enqueing "enqueing \"" +MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" +MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " +MSG_ERR_KILLED "Printer halted. kill() called!" +MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " +MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" +MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +MSG_ERROR "ERRORE:" +MSG_EXTRUDER "Estrusore" +MSG_EXTRUDER_1 "Estrusore 1" +MSG_EXTRUDER_2 "Estrusore 2" +MSG_EXTRUDER_3 "Estrusore 3" +MSG_EXTRUDER_4 "Estrusore 4" +MSG_FAN_SPEED "Velocita vent." +MSG_FIL_ADJUSTING "Filamento in fase di regolazione. Attendere prego." +MSG_FILAMENT_CLEAN "Il colore e' nitido?" +MSG_FILAMENT_LOADING_T0 "Inserire filamento nell'estrusore 1. Click per continuare." +MSG_FILAMENT_LOADING_T1 "Inserire filamento nell'estrusore 2. Click per continuare." +MSG_FILAMENT_LOADING_T2 "Inserire filamento nell'estrusore 3. Click per continuare." +MSG_FILAMENT_LOADING_T3 "Inserire filamento nell'estrusore 4. Click per continuare." +MSG_FILAMENTCHANGE "Camb. filamento" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Reiterazione " +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Ricerca del letto punto di calibraz." +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " su 4" +MSG_FINISHING_MOVEMENTS "Arresto in corso" +MSG_FLOW "Flusso" +MSG_FOLLOW_CALIBRATION_FLOW "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione." +MSG_FREE_MEMORY " Free Memory: " +MSG_HEATING "Riscaldamento..." +MSG_HEATING_COMPLETE "Riscald. completo" +MSG_HOMEYZ "Calibra Z" +MSG_HOMEYZ_DONE "Calibrazione OK" +MSG_HOMEYZ_PROGRESS "Calibrando Z" +MSG_CHANGE_EXTR "Cambio estrusore." +MSG_CHANGE_SUCCESS "Cambio riuscito!" +MSG_CHANGING_FILAMENT "Cambiando filam." +MSG_CHOOSE_EXTRUDER "Seleziona estrusore:" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Perfezion. il letto punto di calibraz." +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " su 4" +MSG_INIT_SDCARD "Init. SD card" +MSG_INSERT_FILAMENT "Inserire filamento" +MSG_KILLED "IN TILT." +MSG_LANGUAGE_NAME "Italiano" +MSG_LANGUAGE_SELECT "Seleziona lingua" +MSG_LEFT "Sinistra:" +MSG_LOAD_ALL "Caricare tutti" +MSG_LOAD_EPROM "Load memory" +MSG_LOAD_FILAMENT "Carica filamento" +MSG_LOAD_FILAMENT_1 "Caricare fil. 1" +MSG_LOAD_FILAMENT_2 "Caricare fil. 2" +MSG_LOAD_FILAMENT_3 "Caricare fil. 3" +MSG_LOAD_FILAMENT_4 "Caricare fil. 4" +MSG_LOADING_COLOR "Caricando colore" +MSG_LOADING_FILAMENT "Caricando filam." +MSG_LOOSE_PULLEY "Puleggia lenta" +MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " +MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " +MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " +MSG_M117_V2_CALIBRATION "M117 Cal. primo layer." +MSG_M119_REPORT "Reporting endstop status" +MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " +MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " +MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +MSG_MAIN "Menu principale" +MSG_MARK_FIL "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare." +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Misurare l'altezza di riferimento del punto di calibrazione" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " su 9" +MSG_MEASURED_SKEW "Incl. misurata:" +MSG_MENU_CALIBRATION "Calibrazione" +MSG_MESH_BED_LEVELING "Mesh livel. letto" +MSG_MOTION "Motion" +MSG_MOVE_01MM "Move 0.1mm" +MSG_MOVE_10MM "Move 10mm" +MSG_MOVE_1MM "Move 1mm" +MSG_MOVE_AXIS "Muovi asse" +MSG_MOVE_CARRIAGE_TO_THE_TOP "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare." +MSG_MOVE_E "Muovi Estrusore" +MSG_MOVE_X "Muovi X" +MSG_MOVE_Y "Muovi Y" +MSG_MOVE_Z "Muovi Z" +MSG_NEW_FIRMWARE_AVAILABLE "Nuova versione del firmware disponibile" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prega aggiorna." +MSG_NO "No" +MSG_NO_CARD "Nessuna SD" +MSG_NO_MOVE "Nessun movimento." +MSG_NOT_COLOR "Colore non puro" +MSG_NOT_LOADED "Fil. non caricato" +MSG_NOZZLE "Ugello" +MSG_NOZZLE1 "Nozzle2" +MSG_NOZZLE2 "Nozzle3" +MSG_OK "ok" +MSG_PAPER "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante." +MSG_PAUSE_PRINT "Metti in pausa" +MSG_PICK_Z "Pick print" +MSG_PID_EXTRUDER "Calibrazione PID" +MSG_PID_FINISHED "Cal. PID completa" +MSG_PID_RUNNING "Cal. PID" +MSG_PINDA_NOT_CALIBRATED "Taratura della temperatura non ancora eseguita" +MSG_PINDA_PREHEAT "Riscald. PINDA" +MSG_PLA_FILAMENT_LOADED "Il PLA e stato caricato?" +MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +MSG_PLEASE_LOAD_PLA "Per favore prima caricare filamento di PLA." +MSG_PLEASE_WAIT "Aspetta" +MSG_POSITION_UNKNOWN "Home X/Y before Z" +MSG_POWERUP "PowerUp" +MSG_PREHEAT "Preriscalda" +MSG_PREHEAT_NOZZLE "Preris. ugello!" +MSG_PREPARE_FILAMENT "Preparare filamento" +MSG_PRESS "e cliccare manopola" +MSG_PRINT_ABORTED "Stampa abortita" +MSG_PRINT_PAUSED "Stampa in pausa" +MSG_PRUSA3D "prusa3d.com" +MSG_PRUSA3D_FORUM "forum.prusa3d.com" +MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +MSG_REBOOT "Riavvia stampante" +MSG_REFRESH "\xF8" "Refresh" +MSG_RESEND "Resend: " +MSG_RESTORE_FAILSAFE "Restore failsafe" +MSG_RESUME_PRINT "Riprendi stampa" +MSG_RESUMING "Riprendi stampa" +MSG_RESUMING_PRINT "Stampa in ripresa" +MSG_RIGHT "Destra:" +MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " +MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir" +MSG_SD_CARD_OK "SD card ok" +MSG_SD_ERR_WRITE_TO_FILE "error writing to file" +MSG_SD_FILE_OPENED "File opened: " +MSG_SD_FILE_SELECTED "File selected" +MSG_SD_INIT_FAIL "SD init fail" +MSG_SD_INSERTED "SD inserita" +MSG_SD_NOT_PRINTING "Not SD printing" +MSG_SD_OPEN_FILE_FAIL "open failed, File: " +MSG_SD_OPENROOT_FAIL "openRoot failed" +MSG_SD_PRINTING_BYTE "SD printing byte " +MSG_SD_REMOVED "SD rimossa" +MSG_SD_VOL_INIT_FAIL "volume.init failed" +MSG_SD_WORKDIR_FAIL "workDir open failed" +MSG_SD_WRITE_TO_FILE "Writing to file: " +MSG_SELFTEST "Autotest" +MSG_SELFTEST_BEDHEATER "Letto/Riscald." +MSG_SELFTEST_COOLING_FAN "Vent di stampa ant.?" +MSG_SELFTEST_ENDSTOP "Finecorsa" +MSG_SELFTEST_ENDSTOP_NOTHIT "Finec. fuori por." +MSG_SELFTEST_ENDSTOPS "Finecorsa (2)" +MSG_SELFTEST_ERROR "Autotest negativo" +MSG_SELFTEST_EXTRUDER_FAN "Vent SX sull'ugello?" +MSG_SELFTEST_FAILED "Autotest fallito" +MSG_SELFTEST_FAN "Prova del ventilator" +MSG_SELFTEST_FAN_NO "Non si gira" +MSG_SELFTEST_FAN_YES "Gira" +MSG_SELFTEST_HEATERTHERMISTOR "Riscald./Termist." +MSG_SELFTEST_CHECK_ALLCORRECT "Nessun errore" +MSG_SELFTEST_CHECK_BED "Verifica letto" +MSG_SELFTEST_CHECK_ENDSTOPS "Verifica finecorsa" +MSG_SELFTEST_CHECK_HOTEND "Verifica ugello" +MSG_SELFTEST_CHECK_X "Verifica asse X" +MSG_SELFTEST_CHECK_Y "Verifica asse Y" +MSG_SELFTEST_CHECK_Z "Verifica asse Z" +MSG_SELFTEST_MOTOR "Motore" +MSG_SELFTEST_NOTCONNECTED "Non connesso" +MSG_SELFTEST_OK "Autotest OK" +MSG_SELFTEST_PLEASECHECK "Verificare:" +MSG_SELFTEST_START "Avvia autotest" +MSG_SELFTEST_WIRINGERROR "Errore cablaggio" +MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" +MSG_SET_HOME_OFFSETS "Set home offsets" +MSG_SET_ORIGIN "Set origin" +MSG_SET_TEMPERATURE "Imposta temperatura" +MSG_SETTINGS "Impostazioni" +MSG_SEVERE_SKEW "Inc. rilevante:" +MSG_SHOW_END_STOPS "Stato finecorsa" +MSG_SILENT_MODE_OFF "Mode [forte]" +MSG_SILENT_MODE_ON "Modo [silenzioso]" +MSG_SLIGHT_SKEW "Incl. leggera:" +MSG_SPEED "Velocita" +MSG_STATISTICS "Statistiche" +MSG_STATS_FILAMENTUSED "Filamento usato:" +MSG_STATS_PRINTTIME "Tempo di stampa:" +MSG_STATS_TOTALFILAMENT "Filamento tot:" +MSG_STATS_TOTALPRINTTIME "Tempo stampa tot:" +MSG_STEPPER_TOO_HIGH "Steprate too high: " +MSG_STOP_PRINT "Arresta stampa" +MSG_STOPPED "ARRESTATO." +MSG_STORE_EPROM "Store memory" +MSG_SUPPORT "Support" +MSG_SWITCH_PS_OFF "Switch power off" +MSG_SWITCH_PS_ON "Switch power on" +MSG_TAKE_EFFECT " per attualizzare" +MSG_TEMP_CALIBRATION "Cal. temp. " +MSG_TEMP_CALIBRATION_DONE "Taratura temperatura terminata. Fare click per continuare." +MSG_TEMP_CALIBRATION_OFF "Cal. temp. [OFF]" +MSG_TEMP_CALIBRATION_ON "Cal. temp. [ON]" +MSG_TEMPERATURE "Temperatura" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +MSG_TUNE "Regola" +MSG_UNLOAD_ALL "Rilasciare tutti" +MSG_UNLOAD_FILAMENT "Scarica filamento" +MSG_UNLOAD_FILAMENT_1 "Rilasciare fil. 1" +MSG_UNLOAD_FILAMENT_2 "Rilasciare fil. 1" +MSG_UNLOAD_FILAMENT_3 "Rilasciare fil. 1" +MSG_UNLOAD_FILAMENT_4 "Rilasciare fil. 1" +MSG_UNLOADING_FILAMENT "Rilasc. filamento" +MSG_USB_PRINTING "Stampa da USB" +MSG_USED "Usati nella stampa" +MSG_USERWAIT "Attendendo utente" +MSG_V2_CALIBRATION "Cal. primo layer." +MSG_VOLUMETRIC "Filament" +MSG_VOLUMETRIC_ENABLED "E in mm3" +MSG_WAITING_TEMP "In attesa del raffreddamento della testina e del piatto" +MSG_WATCH "Schermata info" +MSG_WIZARD "Wizard" +MSG_WIZARD_CALIBRATION_FAILED "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante." +MSG_WIZARD_CLEAN_HEATBED "Per favore pulisci il piatto, poi premi la manopola." +MSG_WIZARD_DONE "Ben fatto. Buona stampa!" +MSG_WIZARD_FILAMENT_LOADED "Il filamento e stato caricato?" +MSG_WIZARD_HEATING "Sto preriscaldando l'ugello. Per favore attendi." +MSG_WIZARD_INSERT_CORRECT_FILAMENT "Per favore carica filamento di PLA e riprendi il Wizard dopo aver riavviato la stampante." +MSG_WIZARD_LOAD_FILAMENT "Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare." +MSG_WIZARD_PLA_FILAMENT "E questo un filamento di PLA?" +MSG_WIZARD_QUIT "E possibile proseguire la guide Wizard in qualsiasi momento attraverso Calibrazione -> Wizard." +MSG_WIZARD_REPEAT_V2_CAL "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?" +MSG_WIZARD_RERUN "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?" +MSG_WIZARD_SELFTEST "Anzitutto avviero il Self Test per controllare gli errori di assemblaggio piu comuni." +MSG_WIZARD_V2_CAL "Adesso tarero lo stacco fra ugello e superfice del piatto." +MSG_WIZARD_V2_CAL_2 "Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione." +MSG_WIZARD_WELCOME "Ciao, sono la tua stampante Original Prusa i3. Gradiresti aiuto attraverso il processo di configurazione?" +MSG_WIZARD_WILL_PREHEAT "Adesso preriscaldero l'ugello per PLA." +MSG_WIZARD_XYZ_CAL "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min." +MSG_WIZARD_Z_CAL "Adesso avviero una Calibrazione Z." +MSG_XYZ_DETAILS "XYZ Cal. dettagli" +MSG_Y_DISTANCE_FROM_MIN "Distanza Y da min:" +MSG_YES "Si" +MSG_ZPROBE_OUT "Z probe out. bed" +MSG_ZPROBE_ZOFFSET "Z Offset" +WELCOME_MSG CUSTOM_MENDEL_NAME " pronta." diff --git a/lang_upgrade/msgs_pl.txt b/lang_upgrade/msgs_pl.txt new file mode 100644 index 00000000..85b550ba --- /dev/null +++ b/lang_upgrade/msgs_pl.txt @@ -0,0 +1,295 @@ +MSG_ADJUSTZ "Autodostroic Z?" +MSG_ALL "Wszystko" +MSG_AUTO_HOME "Auto home" +MSG_BABYSTEP_X "Babystep X" +MSG_BABYSTEP_Y "Babystep Y" +MSG_BABYSTEP_Z "Dostrojenie osy Z" +MSG_BABYSTEP_Z_NOT_SET "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy." +MSG_BABYSTEPPING_X "Babystepping X" +MSG_BABYSTEPPING_Y "Babystepping Y" +MSG_BABYSTEPPING_Z "Dostrojenie Z" +MSG_BED "Stolik" +MSG_BED_CORRECTION_FRONT "Do przodu [um]" +MSG_BED_CORRECTION_LEFT "W lewo [um]" +MSG_BED_CORRECTION_MENU "Korekta podkladki" +MSG_BED_CORRECTION_REAR "Do tylu [um]" +MSG_BED_CORRECTION_RESET "Reset" +MSG_BED_CORRECTION_RIGHT "W prawo [um]" +MSG_BED_DONE "Stolik OK." +MSG_BED_HEATING "Grzanie stolika.." +MSG_BED_LEVELING_FAILED_POINT_HIGH "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset." +MSG_BED_LEVELING_FAILED_POINT_LOW "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset." +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!" +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu." +MSG_BEGIN_FILE_LIST "Begin file list" +MSG_CALIBRATE_BED "Kalibracja XYZ" +MSG_CALIBRATE_BED_RESET "Reset kalibr. XYZ" +MSG_CALIBRATE_E "Kalibruj E" +MSG_CALIBRATE_PINDA "Skalibrowac" +MSG_CALIBRATION_PINDA_MENU "Cieplna kalibr." +MSG_CARD_MENU "Druk z SD" +MSG_CLEAN_NOZZLE_E "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. " +MSG_CNG_SDCARD "Vymenit SD" +MSG_CONFIGURATION_VER " Last Updated: " +MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Oba wozki dojechaly do gornej ramy?" +MSG_CONFIRM_NOZZLE_CLEAN "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem." +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem." +MSG_CONTROL "Kontrola" +MSG_COOLDOWN "Wychlodzic" +MSG_CORRECTLY "Wymiana ok?" +MSG_CURRENT "Tylko aktualne" +MSG_DATE "Data:" +MSG_DISABLE_STEPPERS "Wylaczyc silniki" +MSG_DWELL "Sleep..." +MSG_E_CAL_KNOB "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem." +MSG_END_FILE_LIST "End file list" +MSG_ENDSTOP_HIT "TRIGGERED" +MSG_ENDSTOP_OPEN "open" +MSG_ENDSTOPS_HIT "endstops hit: " +MSG_Enqueing "enqueing \"" +MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" +MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " +MSG_ERR_KILLED "Printer halted. kill() called!" +MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " +MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" +MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +MSG_ERROR "BLAD:" +MSG_EXTRUDER "Ekstruder" +MSG_EXTRUDER_1 "Ekstruder 1" +MSG_EXTRUDER_2 "Ekstruder 2" +MSG_EXTRUDER_3 "Ekstruder 3" +MSG_EXTRUDER_4 "Ekstruder 4" +MSG_FACTOR " \002 Fact" +MSG_FAN_SPEED "Predkosc went." +MSG_FIL_ADJUSTING "Przebiega wyrownanie filamentow. Prosze czekac." +MSG_FILAMENT_CLEAN "Czy kolor jest czysty?" +MSG_FILAMENT_LOADING_T0 "Wloz filament do ekstrudera 1. Potwierdz przyciskiem." +MSG_FILAMENT_LOADING_T1 "Wloz filament do ekstrudera 2. Potwierdz przyciskiem." +MSG_FILAMENT_LOADING_T2 "Wloz filament do ekstrudera 3. Potwierdz przyciskiem." +MSG_FILAMENT_LOADING_T3 "Wloz filament do ekstrudera 4. Potwierdz przyciskiem." +MSG_FILAMENTCHANGE "Wymienic filament" +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteracja " +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Szukam punktu kalibracyjnego podkladki" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " z 4" +MSG_FINISHING_MOVEMENTS "Konczenie druku" +MSG_FLOW "Przeplyw" +MSG_FLOW0 "Prutok 0" +MSG_FLOW1 "Prutok 1" +MSG_FLOW2 "Prutok 2" +MSG_FOLLOW_CALIBRATION_FLOW "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest." +MSG_FREE_MEMORY " Free Memory: " +MSG_HEATING "Grzanie..." +MSG_HEATING_COMPLETE "Grzanie OK." +MSG_HOMEYZ "Kalibruj Z" +MSG_HOMEYZ_DONE "Kalibracja OK" +MSG_HOMEYZ_PROGRESS "Kalibruje Z" +MSG_CHANGE_EXTR "Zmienic ekstruder" +MSG_CHANGE_SUCCESS "Wymiana ok!" +MSG_CHANGING_FILAMENT "Wymiana filamentu" +MSG_CHOOSE_EXTRUDER "Wybierz ekstruder" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Poprawiam precyzyjnosc punktu kalibracyjnego" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " z 4" +MSG_INIT_SDCARD "Inic. SD" +MSG_INSERT_FILAMENT "Wprowadz filament" +MSG_KILLED "KILLED. " +MSG_LANGUAGE_NAME "Polski" +MSG_LANGUAGE_SELECT "Wybor jezyka" +MSG_LEFT "Lewy:" +MSG_LOAD_ALL "Zalad. wszystkie" +MSG_LOAD_EPROM "Ulozit pamet" +MSG_LOAD_FILAMENT "Wprowadz filament" +MSG_LOAD_FILAMENT_1 "Zaladowac fil. 1" +MSG_LOAD_FILAMENT_2 "Zaladowac fil. 2" +MSG_LOAD_FILAMENT_3 "Zaladowac fil. 3" +MSG_LOAD_FILAMENT_4 "Zaladowac fil. 4" +MSG_LOADING_COLOR "Czyszcz. koloru" +MSG_LOADING_FILAMENT "Wprow. filamentu" +MSG_LOOSE_PULLEY "Kolo pasowe" +MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " +MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " +MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " +MSG_M117_V2_CALIBRATION "M117 Kal. 1. warstwy" +MSG_M119_REPORT "Reporting endstop status" +MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " +MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " +MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +MSG_MAIN "Menu glowne" +MSG_MARK_FIL "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem." +MSG_MAX " \002 Max" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Okreslam wysokosc odniesienia punktu kalibracyjnego" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " z 9" +MSG_MEASURED_SKEW "Zmier. sciecie:" +MSG_MENU_CALIBRATION "Kalibracja" +MSG_MESH_BED_LEVELING "Mesh Bed Leveling" +MSG_MIN " \002 Min" +MSG_MOVE_AXIS "Ruch osi" +MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic." +MSG_MOVE_E "Extruder" +MSG_MOVE_X "Przesunac X" +MSG_MOVE_Y "Przesunac Y" +MSG_MOVE_Z "Przesunac Z" +MSG_NEW_FIRMWARE_AVAILABLE "Wyszla nowa wersja firmware:" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosze zaktualizowac" +MSG_NO "Nie" +MSG_NO_CARD "Brak karty SD" +MSG_NO_MOVE "No move." +MSG_NOT_COLOR "Kolor zanieczysz." +MSG_NOT_LOADED "Brak filamentu" +MSG_NOZZLE "Dysza" +MSG_NOZZLE1 "Tryska2" +MSG_NOZZLE2 "Tryska3" +MSG_OK "ok" +MSG_PAPER "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke." +MSG_PAUSE_PRINT "Przerwac druk" +MSG_PICK_Z "Vyberte vytisk" +MSG_PID_EXTRUDER "Kalibracja PID" +MSG_PID_FINISHED "Kal. PID zakonczona" +MSG_PID_RUNNING "Kal. PID" +MSG_PINDA_NOT_CALIBRATED "Cieplna kalibracja nie byla przeprowadzona" +MSG_PINDA_PREHEAT "Grzanie PINDA" +MSG_PLA_FILAMENT_LOADED "Fialment PLA jest zaladowany?" +MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +MSG_PLEASE_LOAD_PLA "Prosze, najpierw zaladuj filament PLA." +MSG_PLEASE_WAIT "Prosze czekac" +MSG_POWERUP "PowerUp" +MSG_PREHEAT "Grzanie" +MSG_PREHEAT_NOZZLE "Nagrzej dysze!" +MSG_PREPARE_FILAMENT "Przygotuj filament" +MSG_PREPARE_FILAMENT "Przygotuj filament" +MSG_PRESS "Nacisnij przycisk" +MSG_PRINT_ABORTED "Druk przerwany" +MSG_PRINT_PAUSED "Druk zatrzymany" +MSG_PRUSA3D "prusa3d.cz" +MSG_PRUSA3D_FORUM "forum.prusa3d.cz" +MSG_PRUSA3D_HOWTO "howto.prusa3d.cz" +MSG_REBOOT "Restart drukarki" +MSG_REFRESH "\xF8" "Obnovit" +MSG_RESEND "Resend: " +MSG_RESTORE_FAILSAFE "Obnovit vychozi" +MSG_RESUME_PRINT "Kontynuowac" +MSG_RESUMING "Wznowienie druku" +MSG_RESUMING_PRINT "Wznawianie druku" +MSG_RIGHT "Prawy:" +MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " +MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir" +MSG_SD_CARD_OK "SD card ok" +MSG_SD_ERR_WRITE_TO_FILE "error writing to file" +MSG_SD_FILE_OPENED "File opened: " +MSG_SD_FILE_SELECTED "File selected" +MSG_SD_INIT_FAIL "SD init fail" +MSG_SD_INSERTED "Karta wlozona" +MSG_SD_NOT_PRINTING "Not SD printing" +MSG_SD_OPEN_FILE_FAIL "open failed, File: " +MSG_SD_OPENROOT_FAIL "openRoot failed" +MSG_SD_PRINTING_BYTE "SD printing byte " +MSG_SD_REMOVED "Karta wyjeta" +MSG_SD_VOL_INIT_FAIL "volume.init failed" +MSG_SD_WORKDIR_FAIL "workDir open failed" +MSG_SD_WRITE_TO_FILE "Writing to file: " +MSG_SELFTEST "Selftest " +MSG_SELFTEST_BEDHEATER "Bed / Heater" +MSG_SELFTEST_COOLING_FAN "Przedni went. druku?" +MSG_SELFTEST_ENDSTOP "Endstop" +MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit" +MSG_SELFTEST_ENDSTOPS "Endstops" +MSG_SELFTEST_ERROR "Selftest error !" +MSG_SELFTEST_EXTRUDER_FAN "Lewy went na dysze?" +MSG_SELFTEST_FAILED "Selftest nieudany" +MSG_SELFTEST_FAN "Test wentylatora" +MSG_SELFTEST_FAN_NO "Nie kreci sie" +MSG_SELFTEST_FAN_YES "Kreci sie" +MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" +MSG_SELFTEST_CHECK_ALLCORRECT "Wszystko OK " +MSG_SELFTEST_CHECK_BED "Kontrola bed " +MSG_SELFTEST_CHECK_ENDSTOPS "Kontrola endstops" +MSG_SELFTEST_CHECK_HOTEND "Kontrola hotend " +MSG_SELFTEST_CHECK_X "Kontrola X axis " +MSG_SELFTEST_CHECK_Y "Kontrola Y axis " +MSG_SELFTEST_CHECK_Z "Kontrola Z axis " +MSG_SELFTEST_MOTOR "Silnik" +MSG_SELFTEST_NOTCONNECTED "Nie podlaczono " +MSG_SELFTEST_OK "Self test OK" +MSG_SELFTEST_PLEASECHECK "Skontroluj :" +MSG_SELFTEST_START "Self test start " +MSG_SELFTEST_WIRINGERROR "Blad polaczenia" +MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" +MSG_SET_HOME_OFFSETS "Nastav pocatek home" +MSG_SET_ORIGIN "Nastav pocatek" +MSG_SET_TEMPERATURE "Ustawic temperature" +MSG_SETTINGS "Ustawienia" +MSG_SEVERE_SKEW "Ostre sciecie:" +MSG_SHOW_END_STOPS "Pokaz krancowki" +MSG_SILENT_MODE_OFF "Tryb[w wydajnosc]" +MSG_SILENT_MODE_ON "Tryb [cichy]" +MSG_SLIGHT_SKEW "Lekkie sciecie:" +MSG_SPEED "Predkosc" +MSG_STATISTICS "Statystyka " +MSG_STATS_FILAMENTUSED "Filament : " +MSG_STATS_PRINTTIME "Czas druku : " +MSG_STATS_TOTALFILAMENT "Filament lacznie :" +MSG_STATS_TOTALPRINTTIME "Czas calkowity :" +MSG_STEPPER_TOO_HIGH "Steprate too high: " +MSG_STOP_PRINT "Zatrzymac druk" +MSG_STOPPED "STOPPED. " +MSG_STORE_EPROM "Store memory" +MSG_SUPPORT "Pomoc" +MSG_SWITCH_PS_OFF "Zapnout zdroj" +MSG_SWITCH_PS_ON "Vypnout zdroj" +MSG_TAKE_EFFECT " wprow. zmian" +MSG_TEMP_CALIBRATION "Ciepl. kal. " +MSG_TEMP_CALIBRATION_DONE "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem" +MSG_TEMP_CALIBRATION_OFF "Ciepl. kal. [OFF]" +MSG_TEMP_CALIBRATION_ON "Ciepl. kal. [ON]" +MSG_TEMPERATURE "Temperatura" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "karta SD [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "karta SD[FlshAir]" +MSG_TUNE "Nastroic" +MSG_UNLOAD_ALL "Wyjac wszystkie" +MSG_UNLOAD_FILAMENT "Wyjac filament" +MSG_UNLOAD_FILAMENT_1 "Wyjac filament 1" +MSG_UNLOAD_FILAMENT_2 "Wyjac filament 2" +MSG_UNLOAD_FILAMENT_3 "Wyjac filament 3" +MSG_UNLOAD_FILAMENT_4 "Wyjac filament 4" +MSG_UNLOADING_FILAMENT "Wysuwam filament" +MSG_USB_PRINTING "Druk z USB " +MSG_USED "Uzyte przy druku" +MSG_USERWAIT "Wait for user..." +MSG_V2_CALIBRATION "Kal. 1. warstwy" +MSG_VOLUMETRIC "Filament" +MSG_VOLUMETRIC_ENABLED "E in mm3" +MSG_WAITING_TEMP "Oczekiwanie na wychlodzenie dyszy i podkladki." +MSG_WATCH "Informacje" +MSG_WIZARD "Wizard" +MSG_WIZARD_CALIBRATION_FAILED "Prosze sprawdz nasz poradnik i napraw problem. Potem przywroc Wizard restartujac drukarke." +MSG_WIZARD_CLEAN_HEATBED "Prosze oczysc stolik i nacisnij guzik." +MSG_WIZARD_DONE "Gotowe. Udanego druku!" +MSG_WIZARD_FILAMENT_LOADED "Filament jest zaladowany?" +MSG_WIZARD_HEATING "Nagrzewanie dyszy. Prosze czekac." +MSG_WIZARD_INSERT_CORRECT_FILAMENT "Prosze zaladuj filament PLA i przywroc Wizard przez restart drukarki." +MSG_WIZARD_LOAD_FILAMENT "Prosze umiesc filament PLA w ekstruderze i nacisnij przycisk by zaladowac." +MSG_WIZARD_PLA_FILAMENT "Czy to filament PLA?" +MSG_WIZARD_QUIT "Zawsze mozesz przywrocic Wizard przez Kalibracja -> Wizard." +MSG_WIZARD_REPEAT_V2_CAL "Chcesz powtorzyc ostatni krok i przestawic odleglosc miedzy dysza a stolikiem?" +MSG_WIZARD_RERUN "Wlaczenie Wizard usunie obecne dane kalibracyjne i zacznie od nowa. Kontynuowac?" +MSG_WIZARD_SELFTEST "Najpierw wlacze autotest w celu kontrolli najczestszych problemow z montazem." +MSG_WIZARD_V2_CAL "Kalibruje odleglosc miedzy koncowka dyszy a stolikiem." +MSG_WIZARD_V2_CAL_2 "Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac guzik, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym poradniku w rozdz. Kalibracja" +MSG_WIZARD_WELCOME "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z instalacja?" +MSG_WIZARD_WILL_PREHEAT "Nagrzewam dysze dla PLA." +MSG_WIZARD_XYZ_CAL "Wlaczam kalibracje xyz. Zajmie to ok. 12 min." +MSG_WIZARD_Z_CAL "Wlaczam kalibracje z." +MSG_XYZ_DETAILS "Szczegoly kal.XYZ" +MSG_Y_DISTANCE_FROM_MIN "Odleglosc Y od min.:" +MSG_YES "Tak" +WELCOME_MSG CUSTOM_MENDEL_NAME " gotowa" diff --git a/lang_upgrade/msgs_usage.txt b/lang_upgrade/msgs_usage.txt new file mode 100644 index 00000000..4750ec4e --- /dev/null +++ b/lang_upgrade/msgs_usage.txt @@ -0,0 +1,399 @@ +MSG_BABYSTEP_X 0 +MSG_BABYSTEP_Y 0 +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ 0 +MSG_CONTROL 0 +MSG_CRASH_DETECTED2 0 +MSG_FIL_ADJUSTING 0 +MSG_FLOW0 0 +MSG_FLOW1 0 +MSG_FLOW2 0 +MSG_FW_VERSION_RC 0 +MSG_INFO_FILAMENT_XDIFF 0 +MSG_INFO_FILAMENT_YDIFF 0 +MSG_LANGUAGE_NAME 0 +MSG_LOAD_EPROM 0 +MSG_MOTION 0 +MSG_REBOOT 0 +MSG_RECTRACT 0 +MSG_RESTORE_FAILSAFE 0 +MSG_SD_NOT_PRINTING 0 +MSG_SERIAL_ERROR_MENU_STRUCTURE 0 +MSG_SET_HOME_OFFSETS 0 +MSG_SET_ORIGIN 0 +MSG_STEPPER_TIMER_OVERFLOW_ERROR 0 +MSG_STORE_EPROM 0 +MSG_SWITCH_PS_OFF 0 +MSG_SWITCH_PS_ON 0 +MSG_TAKE_EFFECT 0 +MSG_USB_PRINTING 0 +MSG_VOLUMETRIC 0 +MSG_VOLUMETRIC_ENABLED 0 +MSG_ACTIVE_EXTRUDER 1 +MSG_ADJUSTZ 1 +MSG_AUTHOR 1 +MSG_AUTOLOAD_FILAMENT 1 +MSG_AUTOLOADING_ENABLED 1 +MSG_AUTOLOADING_ONLY_IF_FSENS_ON 1 +MSG_BABYSTEPPING_X 1 +MSG_BABYSTEPPING_Y 1 +MSG_BABYSTEPPING_Z 1 +MSG_BED_CORRECTION_FRONT 1 +MSG_BED_CORRECTION_LEFT 1 +MSG_BED_CORRECTION_MENU 1 +MSG_BED_CORRECTION_REAR 1 +MSG_BED_CORRECTION_RESET 1 +MSG_BED_CORRECTION_RIGHT 1 +MSG_BED_HEATING_SAFETY_DISABLED 1 +MSG_BED_LEVELING_FAILED_POINT_HIGH 1 +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED 1 +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR 1 +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR 1 +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR 1 +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT 1 +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND 1 +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME 1 +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD 1 +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR 1 +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR 1 +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR 1 +MSG_BEGIN_FILE_LIST 1 +MSG_CALIBRATE_BED 1 +MSG_CALIBRATE_BED_RESET 1 +MSG_CALIBRATE_E 1 +MSG_CALIBRATE_PINDA 1 +MSG_CALIBRATION_PINDA_MENU 1 +MSG_CLEAN_NOZZLE_E 1 +MSG_CNG_SDCARD 1 +MSG_CONFIGURATION_VER 1 +MSG_CONFIRM_CARRIAGE_AT_THE_TOP 1 +MSG_CORRECTLY 1 +MSG_COUNT_X 1 +MSG_CRASH_DET_ONLY_IN_NORMAL 1 +MSG_CRASH_DET_STEALTH_FORCE_OFF 1 +MSG_CURRENT 1 +MSG_DATE 1 +MSG_DEFAULT_SETTINGS_LOADED 1 +MSG_DISABLE_STEPPERS 1 +MSG_DWELL 1 +MSG_E_CAL_KNOB 1 +MSG_END_FILE_LIST 1 +MSG_ERR_COLD_EXTRUDE_STOP 1 +MSG_ERR_CHECKSUM_MISMATCH 1 +MSG_ERR_KILLED 1 +MSG_ERR_LINE_NO 1 +MSG_ERR_LONG_EXTRUDE_STOP 1 +MSG_ERR_NO_CHECKSUM 1 +MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM 1 +MSG_ERR_NO_THERMISTORS 1 +MSG_EXTRUDER_1 1 +MSG_EXTRUDER_2 1 +MSG_EXTRUDER_3 1 +MSG_EXTRUDER_4 1 +MSG_EXTRUDER_CORRECTION 1 +MSG_EXTRUDER_CORRECTION_OFF 1 +MSG_FACTOR 1 +MSG_FANS_CHECK_OFF 1 +MSG_FANS_CHECK_ON 1 +MSG_FILAMENT_SENSOR 1 +MSG_FILE_CNT 1 +MSG_FILE_INCOMPLETE 1 +MSG_FILE_PRINTED 1 +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION 1 +MSG_FLOW 1 +MSG_FORCE_SELFTEST 1 +MSG_FREE_MEMORY 1 +MSG_FSENS_AUTOLOAD_OFF 1 +MSG_FSENS_AUTOLOAD_ON 1 +MSG_FSENS_NOT_RESPONDING 1 +MSG_FSENSOR_NA 1 +MSG_FW_VERSION_ALPHA 1 +MSG_FW_VERSION_BETA 1 +MSG_FW_VERSION_UNKNOWN 1 +MSG_HOMEYZ_DONE 1 +MSG_HOMEYZ_PROGRESS 1 +MSG_CHANGE_EXTR 1 +MSG_CHANGE_SUCCESS 1 +MSG_CHANGED_BOTH 1 +MSG_CHANGED_MOTHERBOARD 1 +MSG_CHANGED_PRINTER 1 +MSG_CHANGING_FILAMENT 1 +MSG_CHECK_IDLER 1 +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 1 +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 1 +MSG_INFO_EXTRUDER 1 +MSG_INFO_NOZZLE_FAN 1 +MSG_INFO_PRINT_FAN 1 +MSG_INIT_SDCARD 1 +MSG_INSERT_FILAMENT 1 +MSG_INVALID_EXTRUDER 1 +MSG_KILLED 1 +MSG_LANGUAGE_SELECT 1 +MSG_LEFT 1 +MSG_LOAD_ALL 1 +MSG_LOAD_FILAMENT_1 1 +MSG_LOAD_FILAMENT_2 1 +MSG_LOAD_FILAMENT_3 1 +MSG_LOAD_FILAMENT_4 1 +MSG_LOADING_COLOR 1 +MSG_LOOSE_PULLEY 1 +MSG_M104_INVALID_EXTRUDER 1 +MSG_M105_INVALID_EXTRUDER 1 +MSG_M109_INVALID_EXTRUDER 1 +MSG_M119_REPORT 1 +MSG_M200_INVALID_EXTRUDER 1 +MSG_M218_INVALID_EXTRUDER 1 +MSG_M221_INVALID_EXTRUDER 1 +MSG_MARK_FIL 1 +MSG_MAX 1 +MSG_MEASURED_OFFSET 1 +MSG_MEASURED_SKEW 1 +MSG_MENU_BELT_STATUS 1 +MSG_MENU_TEMPERATURES 1 +MSG_MENU_VOLTAGES 1 +MSG_MESH_BED_LEVELING 1 +MSG_MIN 1 +MSG_MOVE_AXIS 1 +MSG_MOVE_CARRIAGE_TO_THE_TOP 1 +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z 1 +MSG_MOVE_E 1 +MSG_MOVE_X 1 +MSG_MOVE_Y 1 +MSG_MOVE_Z 1 +MSG_NEW_FIRMWARE_AVAILABLE 1 +MSG_NEW_FIRMWARE_PLEASE_UPGRADE 1 +MSG_NO_CARD 1 +MSG_NO_MOVE 1 +MSG_NOT_COLOR 1 +MSG_NOT_LOADED 1 +MSG_NOZZLE1 1 +MSG_NOZZLE2 1 +MSG_PAUSE_PRINT 1 +MSG_PICK_Z 1 +MSG_PID_EXTRUDER 1 +MSG_PID_FINISHED 1 +MSG_PID_RUNNING 1 +MSG_PINDA_NOT_CALIBRATED 1 +MSG_PINDA_PREHEAT 1 +MSG_PLA_FILAMENT_LOADED 1 +MSG_PLANNER_BUFFER_BYTES 1 +MSG_PLEASE_LOAD_PLA 1 +MSG_PREHEAT 1 +MSG_PREPARE_FILAMENT 1 +MSG_PRESS 1 +MSG_PRESS_TO_PREHEAT 1 +MSG_PRINT_PAUSED 1 +MSG_PRINTER_DISCONNECTED 1 +MSG_PRUSA3D 1 +MSG_PRUSA3D_FORUM 1 +MSG_PRUSA3D_HOWTO 1 +MSG_RECOVERING_PRINT 1 +MSG_RESEND 1 +MSG_RESUME_PRINT 1 +MSG_RESUMING 1 +MSG_RESUMING_PRINT 1 +MSG_RIGHT 1 +MSG_SD_CANT_ENTER_SUBDIR 1 +MSG_SD_CANT_OPEN_SUBDIR 1 +MSG_SD_CARD_OK 1 +MSG_SD_FILE_OPENED 1 +MSG_SD_FILE_SELECTED 1 +MSG_SD_INIT_FAIL 1 +MSG_SD_INSERTED 1 +MSG_SD_OPENROOT_FAIL 1 +MSG_SD_PRINTING_BYTE 1 +MSG_SD_REMOVED 1 +MSG_SD_SIZE 1 +MSG_SD_VOL_INIT_FAIL 1 +MSG_SD_WRITE_TO_FILE 1 +MSG_SECOND_SERIAL_OFF 1 +MSG_SECOND_SERIAL_ON 1 +MSG_SELFTEST 1 +MSG_SELFTEST_AXIS 1 +MSG_SELFTEST_AXIS_LENGTH 1 +MSG_SELFTEST_BEDHEATER 1 +MSG_SELFTEST_ENDSTOP 1 +MSG_SELFTEST_ENDSTOP_NOTHIT 1 +MSG_SELFTEST_ENDSTOPS 1 +MSG_SELFTEST_ERROR 1 +MSG_SELFTEST_EXTRUDER_FAN_SPEED 1 +MSG_SELFTEST_FANS 1 +MSG_SELFTEST_FILAMENT_SENSOR 1 +MSG_SELFTEST_HEATERTHERMISTOR 1 +MSG_SELFTEST_CHECK_ALLCORRECT 1 +MSG_SELFTEST_CHECK_ENDSTOPS 1 +MSG_SELFTEST_CHECK_HOTEND 1 +MSG_SELFTEST_CHECK_X 1 +MSG_SELFTEST_CHECK_Y 1 +MSG_SELFTEST_CHECK_Z 1 +MSG_SELFTEST_NOTCONNECTED 1 +MSG_SELFTEST_OK 1 +MSG_SELFTEST_PLEASECHECK 1 +MSG_SELFTEST_PRINT_FAN_SPEED 1 +MSG_SELFTEST_START 1 +MSG_SELFTEST_SWAPPED 1 +MSG_SET_TEMPERATURE 1 +MSG_SEVERE_SKEW 1 +MSG_SHOW_END_STOPS 1 +MSG_SLIGHT_SKEW 1 +MSG_SORT_ALPHA 1 +MSG_SORT_NONE 1 +MSG_SORT_TIME 1 +MSG_SORTING 1 +MSG_SPEED 1 +MSG_STACK_ERROR 1 +MSG_STATISTICS 1 +MSG_STATS_FILAMENTUSED 1 +MSG_STATS_PRINTTIME 1 +MSG_STATS_TOTALFILAMENT 1 +MSG_STATS_TOTALPRINTTIME 1 +MSG_STEPPER_TOO_HIGH 1 +MSG_SUPPORT 1 +MSG_TEMP_CAL_FAILED 1 +MSG_TEMP_CAL_WARNING 1 +MSG_TEMP_CALIBRATION_OFF 1 +MSG_TEMP_CALIBRATION_ON 1 +MSG_TEMPERATURE 1 +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF 1 +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON 1 +MSG_TUNE 1 +MSG_UNLOAD_ALL 1 +MSG_UNLOAD_FILAMENT_1 1 +MSG_UNLOAD_FILAMENT_2 1 +MSG_UNLOAD_FILAMENT_3 1 +MSG_UNLOAD_FILAMENT_4 1 +MSG_UNLOAD_SUCCESSFUL 1 +MSG_USED 1 +MSG_USERWAIT 1 +MSG_V2_CALIBRATION 1 +MSG_WAITING_TEMP 1 +MSG_WAITING_TEMP_PINDA 1 +MSG_WIZARD 1 +MSG_WIZARD_CLEAN_HEATBED 1 +MSG_WIZARD_FILAMENT_LOADED 1 +MSG_WIZARD_INSERT_CORRECT_FILAMENT 1 +MSG_WIZARD_LOAD_FILAMENT 1 +MSG_WIZARD_PLA_FILAMENT 1 +MSG_WIZARD_REPEAT_V2_CAL 1 +MSG_WIZARD_RERUN 1 +MSG_WIZARD_SELFTEST 1 +MSG_WIZARD_V2_CAL 1 +MSG_WIZARD_V2_CAL_2 1 +MSG_WIZARD_WELCOME 1 +MSG_WIZARD_WILL_PREHEAT 1 +MSG_WIZARD_XYZ_CAL 1 +MSG_WIZARD_Z_CAL 1 +MSG_X_MAX 1 +MSG_X_MIN 1 +MSG_XYZ_DETAILS 1 +MSG_Y_DISTANCE_FROM_MIN 1 +MSG_Y_MAX 1 +MSG_Y_MIN 1 +MSG_AUTO_HOME 2 +MSG_AUTO_MODE_ON 2 +MSG_BABYSTEP_Z 2 +MSG_BABYSTEP_Z_NOT_SET 2 +MSG_BED_DONE 2 +MSG_BED_HEATING 2 +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED 2 +MSG_BROWNOUT_RESET 2 +MSG_CALIBRATE_Z_AUTO 2 +MSG_CONFIRM_NOZZLE_CLEAN 2 +MSG_COOLDOWN 2 +MSG_CRASH_DETECTED 2 +MSG_CRASHDETECT_NA 2 +MSG_CRASHDETECT_OFF 2 +MSG_CRASHDETECT_ON 2 +MSG_Enqueing 2 +MSG_ERR_STOPPED 2 +MSG_EXTERNAL_RESET 2 +MSG_FAN_SPEED 2 +MSG_FILAMENT_CLEAN 2 +MSG_FILAMENT_LOADING_T0 2 +MSG_FILAMENT_LOADING_T1 2 +MSG_FILAMENT_LOADING_T2 2 +MSG_FILAMENT_LOADING_T3 2 +MSG_FILAMENTCHANGE 2 +MSG_FILE_SAVED 2 +MSG_FINISHING_MOVEMENTS 2 +MSG_FOLLOW_CALIBRATION_FLOW 2 +MSG_FSENS_AUTOLOAD_NA 2 +MSG_FSENSOR_OFF 2 +MSG_FSENSOR_ON 2 +MSG_HEATING 2 +MSG_HEATING_COMPLETE 2 +MSG_HOMEYZ 2 +MSG_LOAD_FILAMENT 2 +MSG_M117_V2_CALIBRATION 2 +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 2 +MSG_MENU_CALIBRATION 2 +MSG_NOZZLE 2 +MSG_PAPER 2 +MSG_PLACE_STEEL_SHEET 2 +MSG_POWERUP 2 +MSG_PRESS_TO_UNLOAD 2 +MSG_PULL_OUT_FILAMENT 2 +MSG_RECOVER_PRINT 2 +MSG_REMOVE_STEEL_SHEET 2 +MSG_SD_ERR_WRITE_TO_FILE 2 +MSG_SD_WORKDIR_FAIL 2 +MSG_SELFTEST_CHECK_BED 2 +MSG_SELFTEST_CHECK_FSENSOR 2 +MSG_SILENT_MODE_ON 2 +MSG_SOFTWARE_RESET 2 +MSG_STEALTH_MODE_OFF 2 +MSG_STEALTH_MODE_ON 2 +MSG_STOPPED 2 +MSG_TEMP_CALIBRATION_DONE 2 +MSG_UNKNOWN_COMMAND 2 +MSG_WATCH 2 +MSG_WATCHDOG_RESET 2 +MSG_WIZARD_DONE 2 +MSG_WIZARD_QUIT 2 +MSG_Z_MAX 2 +MSG_Z_MIN 2 +MSG_ZPROBE_OUT 2 +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 3 +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 3 +MSG_CHOOSE_EXTRUDER 3 +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 3 +MSG_PRINT_ABORTED 3 +MSG_REFRESH 3 +MSG_SD_OPEN_FILE_FAIL 3 +MSG_SELFTEST_COOLING_FAN 3 +MSG_SELFTEST_EXTRUDER_FAN 3 +MSG_SELFTEST_FAILED 3 +MSG_SELFTEST_FAN_NO 3 +MSG_SELFTEST_FAN_YES 3 +MSG_SELFTEST_MOTOR 3 +MSG_STEEL_SHEET_CHECK 3 +MSG_STOP_PRINT 3 +MSG_TEMP_CALIBRATION 3 +MSG_UNLOAD_FILAMENT 3 +MSG_WIZARD_CALIBRATION_FAILED 3 +MSG_WIZARD_HEATING 3 +MSG_ZPROBE_ZOFFSET 3 +MSG_ENDSTOPS_HIT 4 +MSG_EXTRUDER 4 +MSG_ON 4 +MSG_POSITION_UNKNOWN 4 +MSG_SELFTEST_FAN 4 +MSG_SILENT_MODE_OFF 4 +MSG_UNLOADING_FILAMENT 4 +MSG_BED 5 +MSG_BED_LEVELING_FAILED_POINT_LOW 5 +MSG_LOADING_FILAMENT 5 +MSG_OFF 5 +MSG_SELFTEST_WIRINGERROR 5 +MSG_SETTINGS 5 +MSG_ALL 6 +MSG_ENDSTOP_HIT 6 +MSG_ENDSTOP_OPEN 6 +MSG_NO 6 +MSG_CARD_MENU 7 +MSG_PLEASE_WAIT 7 +MSG_YES 7 +MSG_OK 8 +MSG_ERROR 9 +MSG_PREHEAT_NOZZLE 9 +MSG_MAIN 12 +WELCOME_MSG 17 diff --git a/lang_upgrade/replace_common.out b/lang_upgrade/replace_common.out new file mode 100644 index 00000000..d0e7000a --- /dev/null +++ b/lang_upgrade/replace_common.out @@ -0,0 +1,13 @@ +MSG_ACTIVE_EXTRUDER OK +MSG_AUTHOR OK +MSG_COUNT_X OK +MSG_ERR_LINE_NO OK +MSG_ERR_LONG_EXTRUDE_STOP OK +MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM OK +MSG_FILE_PRINTED OK +MSG_INVALID_EXTRUDER OK +MSG_SD_SIZE OK +MSG_X_MAX OK +MSG_X_MIN OK +MSG_Y_MAX OK +MSG_Y_MIN OK diff --git a/lang_upgrade/replace_en.out b/lang_upgrade/replace_en.out new file mode 100644 index 00000000..e8366b67 --- /dev/null +++ b/lang_upgrade/replace_en.out @@ -0,0 +1,247 @@ +MSG_ADJUSTZ OK +MSG_AUTOLOAD_FILAMENT OK +MSG_AUTOLOADING_ENABLED OK +MSG_AUTOLOADING_ONLY_IF_FSENS_ON OK +MSG_BABYSTEPPING_X OK +MSG_BABYSTEPPING_Y OK +MSG_BABYSTEPPING_Z OK +MSG_BED_CORRECTION_FRONT OK +MSG_BED_CORRECTION_LEFT OK +MSG_BED_CORRECTION_MENU OK +MSG_BED_CORRECTION_REAR OK +MSG_BED_CORRECTION_RESET OK +MSG_BED_CORRECTION_RIGHT OK +MSG_BED_HEATING_SAFETY_DISABLED OK +MSG_BED_LEVELING_FAILED_POINT_HIGH OK +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED OK +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR OK +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR OK +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR OK +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT OK +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND OK +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME OK +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD OK +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR OK +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR OK +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR OK +MSG_BEGIN_FILE_LIST OK +MSG_CALIBRATE_BED OK +MSG_CALIBRATE_BED_RESET OK +MSG_CALIBRATE_E OK +MSG_CALIBRATE_PINDA OK +MSG_CALIBRATION_PINDA_MENU OK +MSG_CLEAN_NOZZLE_E OK +MSG_CNG_SDCARD OK +MSG_CONFIGURATION_VER OK +MSG_CONFIRM_CARRIAGE_AT_THE_TOP OK +MSG_CORRECTLY OK +MSG_CRASH_DET_ONLY_IN_NORMAL OK +MSG_CRASH_DET_STEALTH_FORCE_OFF OK +MSG_CURRENT OK +MSG_DATE OK +MSG_DEFAULT_SETTINGS_LOADED OK +MSG_DISABLE_STEPPERS OK +MSG_DWELL OK +MSG_E_CAL_KNOB OK +MSG_END_FILE_LIST OK +MSG_ERR_COLD_EXTRUDE_STOP OK +MSG_ERR_CHECKSUM_MISMATCH OK +MSG_ERR_KILLED OK +MSG_ERR_NO_CHECKSUM OK +MSG_ERR_NO_THERMISTORS OK +MSG_EXTRUDER_1 OK +MSG_EXTRUDER_2 OK +MSG_EXTRUDER_3 OK +MSG_EXTRUDER_4 OK +MSG_EXTRUDER_CORRECTION OK +MSG_EXTRUDER_CORRECTION_OFF OK +MSG_FACTOR OK +MSG_FANS_CHECK_OFF OK +MSG_FANS_CHECK_ON OK +MSG_FILAMENT_SENSOR OK +MSG_FILE_CNT OK +MSG_FILE_INCOMPLETE OK +MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION OK +MSG_FLOW OK +MSG_FORCE_SELFTEST OK +MSG_FREE_MEMORY OK +MSG_FSENS_AUTOLOAD_OFF OK +MSG_FSENS_AUTOLOAD_ON OK +MSG_FSENS_NOT_RESPONDING OK +MSG_FSENSOR_NA OK +MSG_FW_VERSION_ALPHA OK +MSG_FW_VERSION_BETA OK +MSG_FW_VERSION_UNKNOWN OK +MSG_HOMEYZ_DONE OK +MSG_HOMEYZ_PROGRESS OK +MSG_CHANGE_EXTR OK +MSG_CHANGE_SUCCESS OK +MSG_CHANGED_BOTH OK +MSG_CHANGED_MOTHERBOARD OK +MSG_CHANGED_PRINTER OK +MSG_CHANGING_FILAMENT OK +MSG_CHECK_IDLER OK +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 OK +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 OK +MSG_INFO_EXTRUDER OK +MSG_INFO_NOZZLE_FAN OK +MSG_INFO_PRINT_FAN OK +MSG_INIT_SDCARD OK +MSG_INSERT_FILAMENT OK +MSG_KILLED OK +MSG_LANGUAGE_SELECT OK +MSG_LEFT OK +MSG_LOAD_ALL OK +MSG_LOAD_FILAMENT_1 OK +MSG_LOAD_FILAMENT_2 OK +MSG_LOAD_FILAMENT_3 OK +MSG_LOAD_FILAMENT_4 OK +MSG_LOADING_COLOR OK +MSG_LOOSE_PULLEY OK +MSG_M104_INVALID_EXTRUDER OK +MSG_M105_INVALID_EXTRUDER OK +MSG_M109_INVALID_EXTRUDER OK +MSG_M119_REPORT OK +MSG_M200_INVALID_EXTRUDER OK +MSG_M218_INVALID_EXTRUDER OK +MSG_M221_INVALID_EXTRUDER OK +MSG_MARK_FIL OK +MSG_MAX OK +MSG_MEASURED_OFFSET OK +MSG_MEASURED_SKEW OK +MSG_MENU_BELT_STATUS OK +MSG_MENU_TEMPERATURES OK +MSG_MENU_VOLTAGES OK +MSG_MESH_BED_LEVELING OK +MSG_MIN OK +MSG_MOVE_AXIS OK +MSG_MOVE_CARRIAGE_TO_THE_TOP OK +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z OK +MSG_MOVE_E OK +MSG_MOVE_X OK +MSG_MOVE_Y OK +MSG_MOVE_Z OK +MSG_NEW_FIRMWARE_AVAILABLE OK +MSG_NEW_FIRMWARE_PLEASE_UPGRADE OK +MSG_NO_CARD OK +MSG_NO_MOVE OK +MSG_NOT_COLOR OK +MSG_NOT_LOADED OK +MSG_NOZZLE1 OK +MSG_NOZZLE2 OK +MSG_PAUSE_PRINT OK +MSG_PICK_Z OK +MSG_PID_EXTRUDER OK +MSG_PID_FINISHED OK +MSG_PID_RUNNING OK +MSG_PINDA_NOT_CALIBRATED OK +MSG_PINDA_PREHEAT OK +MSG_PLA_FILAMENT_LOADED OK +MSG_PLANNER_BUFFER_BYTES OK +MSG_PLEASE_LOAD_PLA OK +MSG_PREHEAT OK +MSG_PREPARE_FILAMENT OK +MSG_PRESS OK +MSG_PRESS_TO_PREHEAT OK +MSG_PRINT_PAUSED OK +MSG_PRINTER_DISCONNECTED OK +MSG_PRUSA3D OK +MSG_PRUSA3D_FORUM OK +MSG_PRUSA3D_HOWTO OK +MSG_RECOVERING_PRINT OK +MSG_RESEND OK +MSG_RESUME_PRINT OK +MSG_RESUMING OK +MSG_RESUMING_PRINT OK +MSG_RIGHT OK +MSG_SD_CANT_ENTER_SUBDIR OK +MSG_SD_CANT_OPEN_SUBDIR OK +MSG_SD_CARD_OK OK +MSG_SD_FILE_OPENED OK +MSG_SD_FILE_SELECTED OK +MSG_SD_INIT_FAIL OK +MSG_SD_INSERTED OK +MSG_SD_OPENROOT_FAIL OK +MSG_SD_PRINTING_BYTE OK +MSG_SD_REMOVED OK +MSG_SD_VOL_INIT_FAIL OK +MSG_SD_WRITE_TO_FILE OK +MSG_SECOND_SERIAL_OFF OK +MSG_SECOND_SERIAL_ON OK +MSG_SELFTEST OK +MSG_SELFTEST_AXIS OK +MSG_SELFTEST_AXIS_LENGTH OK +MSG_SELFTEST_BEDHEATER OK +MSG_SELFTEST_ENDSTOP OK +MSG_SELFTEST_ENDSTOP_NOTHIT OK +MSG_SELFTEST_ENDSTOPS OK +MSG_SELFTEST_ERROR OK +MSG_SELFTEST_EXTRUDER_FAN_SPEED OK +MSG_SELFTEST_FANS OK +MSG_SELFTEST_FILAMENT_SENSOR OK +MSG_SELFTEST_HEATERTHERMISTOR OK +MSG_SELFTEST_CHECK_ALLCORRECT OK +MSG_SELFTEST_CHECK_ENDSTOPS OK +MSG_SELFTEST_CHECK_HOTEND OK +MSG_SELFTEST_CHECK_X OK +MSG_SELFTEST_CHECK_Y OK +MSG_SELFTEST_CHECK_Z OK +MSG_SELFTEST_NOTCONNECTED OK +MSG_SELFTEST_OK OK +MSG_SELFTEST_PLEASECHECK OK +MSG_SELFTEST_PRINT_FAN_SPEED OK +MSG_SELFTEST_START OK +MSG_SELFTEST_SWAPPED OK +MSG_SET_TEMPERATURE OK +MSG_SEVERE_SKEW OK +MSG_SHOW_END_STOPS OK +MSG_SLIGHT_SKEW OK +MSG_SORT_ALPHA OK +MSG_SORT_NONE OK +MSG_SORT_TIME OK +MSG_SORTING OK +MSG_SPEED OK +MSG_STACK_ERROR OK +MSG_STATISTICS OK +MSG_STATS_FILAMENTUSED OK +MSG_STATS_PRINTTIME OK +MSG_STATS_TOTALFILAMENT OK +MSG_STATS_TOTALPRINTTIME OK +MSG_STEPPER_TOO_HIGH OK +MSG_SUPPORT OK +MSG_TEMP_CAL_FAILED OK +MSG_TEMP_CAL_WARNING OK +MSG_TEMP_CALIBRATION_OFF OK +MSG_TEMP_CALIBRATION_ON OK +MSG_TEMPERATURE OK +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF OK +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON OK +MSG_TUNE OK +MSG_UNLOAD_ALL OK +MSG_UNLOAD_FILAMENT_1 OK +MSG_UNLOAD_FILAMENT_2 OK +MSG_UNLOAD_FILAMENT_3 OK +MSG_UNLOAD_FILAMENT_4 OK +MSG_UNLOAD_SUCCESSFUL OK +MSG_USED OK +MSG_USERWAIT OK +MSG_V2_CALIBRATION OK +MSG_WAITING_TEMP OK +MSG_WAITING_TEMP_PINDA OK +MSG_WIZARD OK +MSG_WIZARD_CLEAN_HEATBED OK +MSG_WIZARD_FILAMENT_LOADED OK +MSG_WIZARD_INSERT_CORRECT_FILAMENT OK +MSG_WIZARD_LOAD_FILAMENT OK +MSG_WIZARD_PLA_FILAMENT OK +MSG_WIZARD_REPEAT_V2_CAL OK +MSG_WIZARD_RERUN OK +MSG_WIZARD_SELFTEST OK +MSG_WIZARD_V2_CAL OK +MSG_WIZARD_V2_CAL_2 OK +MSG_WIZARD_WELCOME OK +MSG_WIZARD_WILL_PREHEAT OK +MSG_WIZARD_XYZ_CAL OK +MSG_WIZARD_Z_CAL OK +MSG_XYZ_DETAILS OK +MSG_Y_DISTANCE_FROM_MIN OK From bd587faab956a9c1c62e28a3d98a58562d605fae Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 03:20:03 +0200 Subject: [PATCH 24/68] New ML support - migration - replaced source, removed original ML support files (backup) --- Firmware/Marlin_main.cpp | 92 ++--- Firmware/cardreader.cpp | 26 +- Firmware/cmdqueue.cpp | 10 +- Firmware/config.h | 6 + Firmware/language.c | 63 +++ Firmware/language.h | 68 +++- Firmware/mesh_bed_calibration.cpp | 6 +- Firmware/messages.c | 120 ++++++ Firmware/messages.h | 117 ++++++ Firmware/planner.cpp | 4 +- Firmware/stepper.cpp | 2 +- Firmware/ultralcd.cpp | 370 +++++++++--------- .../ultralcd_implementation_hitachi_HD44780.h | 6 +- Firmware/util.cpp | 4 +- {Firmware => lang_backup}/langtool.php | 0 {Firmware => lang_backup}/langtool.pl | 0 lang_backup/language.h | 34 ++ {Firmware => lang_backup}/language_all.cpp | 0 {Firmware => lang_backup}/language_all.h | 0 {Firmware => lang_backup}/language_common.h | 0 {Firmware => lang_backup}/language_cz.h | 0 {Firmware => lang_backup}/language_de.h | 0 {Firmware => lang_backup}/language_en.h | 0 {Firmware => lang_backup}/language_es.h | 0 {Firmware => lang_backup}/language_it.h | 0 {Firmware => lang_backup}/language_pl.h | 0 26 files changed, 661 insertions(+), 267 deletions(-) create mode 100644 Firmware/language.c create mode 100644 Firmware/messages.c create mode 100644 Firmware/messages.h rename {Firmware => lang_backup}/langtool.php (100%) rename {Firmware => lang_backup}/langtool.pl (100%) mode change 100755 => 100644 create mode 100644 lang_backup/language.h rename {Firmware => lang_backup}/language_all.cpp (100%) rename {Firmware => lang_backup}/language_all.h (100%) rename {Firmware => lang_backup}/language_common.h (100%) rename {Firmware => lang_backup}/language_cz.h (100%) rename {Firmware => lang_backup}/language_de.h (100%) rename {Firmware => lang_backup}/language_en.h (100%) rename {Firmware => lang_backup}/language_es.h (100%) rename {Firmware => lang_backup}/language_it.h (100%) rename {Firmware => lang_backup}/language_pl.h (100%) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 272cbcfe..6893fa75 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -308,7 +308,7 @@ unsigned long t_fan_rising_edge = millis(); bool mesh_bed_leveling_flag = false; bool mesh_bed_run_from_menu = false; -unsigned char lang_selected = 0; +//unsigned char lang_selected = 0; int8_t FarmMode = 0; bool prusa_sd_card_upload = false; @@ -915,8 +915,8 @@ void factory_reset() void show_fw_version_warnings() { if (FW_DEV_VERSION == FW_VERSION_GOLD || FW_DEV_VERSION == FW_VERSION_RC) return; switch (FW_DEV_VERSION) { - case(FW_VERSION_ALPHA): lcd_show_fullscreen_message_and_wait_P(MSG_FW_VERSION_ALPHA); break; - case(FW_VERSION_BETA): lcd_show_fullscreen_message_and_wait_P(MSG_FW_VERSION_BETA); break; + case(FW_VERSION_ALPHA): lcd_show_fullscreen_message_and_wait_P(_i("You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage.")); break;////MSG_FW_VERSION_ALPHA c=20 r=8 + case(FW_VERSION_BETA): lcd_show_fullscreen_message_and_wait_P(_i("You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage.")); break;////MSG_FW_VERSION_BETA c=20 r=8 case(FW_VERSION_DEVEL): case(FW_VERSION_DEBUG): lcd_update_enable(false); @@ -931,7 +931,7 @@ void show_fw_version_warnings() { lcd_print_at_PGM(0, 3, PSTR(FW_REPOSITORY)); lcd_wait_for_click(); break; - default: lcd_show_fullscreen_message_and_wait_P(MSG_FW_VERSION_UNKNOWN); break; + default: lcd_show_fullscreen_message_and_wait_P(_i("WARNING: This is an unofficial, unsupported build. Use at your own risk!")); break;////MSG_FW_VERSION_UNKNOWN c=20 r=8 } lcd_update_enable(true); } @@ -1026,9 +1026,9 @@ void setup() #ifdef STRING_VERSION_CONFIG_H #ifdef STRING_CONFIG_H_AUTHOR SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_CONFIGURATION_VER); + SERIAL_ECHORPGM(_i(" Last Updated: "));////MSG_CONFIGURATION_VER c=0 r=0 SERIAL_ECHOPGM(STRING_VERSION_CONFIG_H); - SERIAL_ECHORPGM(MSG_AUTHOR); + SERIAL_ECHORPGM(_n(" | Author: "));////MSG_AUTHOR c=0 r=0 SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR); SERIAL_ECHOPGM("Compiled: "); SERIAL_ECHOLNPGM(__DATE__); @@ -1036,9 +1036,9 @@ void setup() #endif SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_FREE_MEMORY); + SERIAL_ECHORPGM(_i(" Free Memory: "));////MSG_FREE_MEMORY c=0 r=0 SERIAL_ECHO(freeMemory()); - SERIAL_ECHORPGM(MSG_PLANNER_BUFFER_BYTES); + SERIAL_ECHORPGM(_i(" PlannerBufferBytes: "));////MSG_PLANNER_BUFFER_BYTES c=0 r=0 SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE); //lcd_update_enable(false); // why do we need this?? - andre // loads data from EEPROM if available else uses defaults (and resets step acceleration rate) @@ -1309,15 +1309,15 @@ void setup() //if motherboard or printer type was changed inform user as it can indicate flashing wrong firmware version //if user confirms with knob, new hw version (printer and/or motherboard) is written to eeprom and message will be not shown next time case(0b01): - lcd_show_fullscreen_message_and_wait_P(MSG_CHANGED_MOTHERBOARD); + lcd_show_fullscreen_message_and_wait_P(_i("Warning: motherboard type changed.")); ////MSG_CHANGED_MOTHERBOARD c=20 r=4 eeprom_write_word((uint16_t*)EEPROM_BOARD_TYPE, MOTHERBOARD); break; case(0b10): - lcd_show_fullscreen_message_and_wait_P(MSG_CHANGED_PRINTER); + lcd_show_fullscreen_message_and_wait_P(_i("Warning: printer type changed.")); ////MSG_CHANGED_PRINTER c=20 r=4 eeprom_write_word((uint16_t*)EEPROM_PRINTER_TYPE, PRINTER_TYPE); break; case(0b11): - lcd_show_fullscreen_message_and_wait_P(MSG_CHANGED_BOTH); + lcd_show_fullscreen_message_and_wait_P(_i("Warning: both printer type and motherboard type changed.")); ////MSG_CHANGED_BOTH c=20 r=4 eeprom_write_word((uint16_t*)EEPROM_PRINTER_TYPE, PRINTER_TYPE); eeprom_write_word((uint16_t*)EEPROM_BOARD_TYPE, MOTHERBOARD); break; @@ -1325,7 +1325,7 @@ void setup() } if (!previous_settings_retrieved) { - lcd_show_fullscreen_message_and_wait_P(MSG_DEFAULT_SETTINGS_LOADED); //if EEPROM version or printer type was changed, inform user that default setting were loaded + lcd_show_fullscreen_message_and_wait_P(_i("Old settings found. Default PID, Esteps etc. will be set.")); //if EEPROM version or printer type was changed, inform user that default setting were loaded////MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 erase_eeprom_section(EEPROM_OFFSET, 156); //erase M500 part of eeprom } if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) { @@ -1346,7 +1346,7 @@ void setup() lcd_update_enable(true); } else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && temp_cal_active == true && calibration_status_pinda() == false) { - //lcd_show_fullscreen_message_and_wait_P(MSG_PINDA_NOT_CALIBRATED); + //lcd_show_fullscreen_message_and_wait_P(_i("Temperature calibration has not been run yet"));////MSG_PINDA_NOT_CALIBRATED c=20 r=4 lcd_update_enable(true); } else if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) { @@ -1357,7 +1357,7 @@ void setup() #if !defined (DEBUG_DISABLE_FORCE_SELFTEST) && defined (TMC2130) if (force_selftest_if_fw_version() && calibration_status() < CALIBRATION_STATUS_ASSEMBLED) { - lcd_show_fullscreen_message_and_wait_P(MSG_FORCE_SELFTEST); + lcd_show_fullscreen_message_and_wait_P(_i("Selftest will be run to calibrate accurate sensorless rehoming."));////MSG_FORCE_SELFTEST c=20 r=8 update_current_firmware_version_to_eeprom(); lcd_selftest(); } @@ -2454,7 +2454,7 @@ void gcode_M114() SERIAL_PROTOCOLPGM(" E:"); SERIAL_PROTOCOL(current_position[E_AXIS]); - SERIAL_PROTOCOLRPGM(MSG_COUNT_X); + SERIAL_PROTOCOLRPGM(_n(" Count X: "));////MSG_COUNT_X c=0 r=0 SERIAL_PROTOCOL(float(st_get_position(X_AXIS)) / axis_steps_per_unit[X_AXIS]); SERIAL_PROTOCOLPGM(" Y:"); SERIAL_PROTOCOL(float(st_get_position(Y_AXIS)) / axis_steps_per_unit[Y_AXIS]); @@ -2934,7 +2934,7 @@ void process_commands() codenum = 0; if(code_seen('P')) codenum = code_value(); // milliseconds to wait if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait - if(codenum != 0) LCD_MESSAGERPGM(MSG_DWELL); + if(codenum != 0) LCD_MESSAGERPGM(_i("Sleep..."));////MSG_DWELL c=0 r=0 st_synchronize(); codenum += millis(); // keep track of when we started waiting previous_millis_cmd = millis(); @@ -3464,7 +3464,7 @@ void process_commands() enquecommand_front_P((PSTR("G28 W0"))); break; } - lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CAL_WARNING); + lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); if (result) @@ -3949,11 +3949,11 @@ void process_commands() break; } if (MESH_HOME_Z_SEARCH - current_position[Z_AXIS] < 0.1f) { - kill_message = MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED; + kill_message = _i("Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset.");////MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 break; } if (has_z && fabs(z0 - current_position[Z_AXIS]) > Z_CALIBRATION_THRESHOLD) { //if we have data from z calibration, max. allowed difference is 1mm for each point - kill_message = MSG_BED_LEVELING_FAILED_POINT_HIGH; + kill_message = _i("Bed leveling failed. Sensor triggered too high. Waiting for reset.");////MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 break; } #ifdef SUPPORT_VERBOSITY @@ -4277,7 +4277,7 @@ void process_commands() if (!hasP && !hasS && *src != '\0') { lcd_setstatus(src); } else { - LCD_MESSAGERPGM(MSG_USERWAIT); + LCD_MESSAGERPGM(_i("Wait for user..."));////MSG_USERWAIT c=0 r=0 } lcd_ignore_click(); //call lcd_ignore_click aslo for else ??? @@ -4305,14 +4305,14 @@ void process_commands() KEEPALIVE_STATE(IN_HANDLER); } if (IS_SD_PRINTING) - LCD_MESSAGERPGM(MSG_RESUMING); + LCD_MESSAGERPGM(_i("Resuming print"));////MSG_RESUMING c=0 r=0 else LCD_MESSAGERPGM(WELCOME_MSG); } break; #endif case 17: - LCD_MESSAGERPGM(MSG_NO_MOVE); + LCD_MESSAGERPGM(_i("No move."));////MSG_NO_MOVE c=0 r=0 enable_x(); enable_y(); enable_z(); @@ -4323,9 +4323,9 @@ void process_commands() #ifdef SDSUPPORT case 20: // M20 - list SD card - SERIAL_PROTOCOLLNRPGM(MSG_BEGIN_FILE_LIST); + SERIAL_PROTOCOLLNRPGM(_i("Begin file list"));////MSG_BEGIN_FILE_LIST c=0 r=0 card.ls(); - SERIAL_PROTOCOLLNRPGM(MSG_END_FILE_LIST); + SERIAL_PROTOCOLLNRPGM(_i("End file list"));////MSG_END_FILE_LIST c=0 r=0 break; case 21: // M21 - init SD card @@ -4864,7 +4864,7 @@ Sigma_Exit: } #else SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_ERR_NO_THERMISTORS); + SERIAL_ERRORLNRPGM(_i("No thermistors - no temperature"));////MSG_ERR_NO_THERMISTORS c=0 r=0 #endif SERIAL_PROTOCOLPGM(" @:"); @@ -5215,10 +5215,10 @@ Sigma_Exit: enable_endstops(true) ; break; case 119: // M119 - SERIAL_PROTOCOLRPGM(MSG_M119_REPORT); + SERIAL_PROTOCOLRPGM(_i("Reporting endstop status"));////MSG_M119_REPORT c=0 r=0 SERIAL_PROTOCOLLN(""); #if defined(X_MIN_PIN) && X_MIN_PIN > -1 - SERIAL_PROTOCOLRPGM(MSG_X_MIN); + SERIAL_PROTOCOLRPGM(_n("x_min: "));////MSG_X_MIN c=0 r=0 if(READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING){ SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); }else{ @@ -5227,7 +5227,7 @@ Sigma_Exit: SERIAL_PROTOCOLLN(""); #endif #if defined(X_MAX_PIN) && X_MAX_PIN > -1 - SERIAL_PROTOCOLRPGM(MSG_X_MAX); + SERIAL_PROTOCOLRPGM(_n("x_max: "));////MSG_X_MAX c=0 r=0 if(READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING){ SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); }else{ @@ -5236,7 +5236,7 @@ Sigma_Exit: SERIAL_PROTOCOLLN(""); #endif #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1 - SERIAL_PROTOCOLRPGM(MSG_Y_MIN); + SERIAL_PROTOCOLRPGM(_n("y_min: "));////MSG_Y_MIN c=0 r=0 if(READ(Y_MIN_PIN)^Y_MIN_ENDSTOP_INVERTING){ SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); }else{ @@ -5245,7 +5245,7 @@ Sigma_Exit: SERIAL_PROTOCOLLN(""); #endif #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1 - SERIAL_PROTOCOLRPGM(MSG_Y_MAX); + SERIAL_PROTOCOLRPGM(_n("y_max: "));////MSG_Y_MAX c=0 r=0 if(READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING){ SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); }else{ @@ -5296,7 +5296,7 @@ Sigma_Exit: tmp_extruder = code_value(); if(tmp_extruder >= EXTRUDERS) { SERIAL_ECHO_START; - SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER); + SERIAL_ECHO(_i("M200 Invalid extruder "));////MSG_M200_INVALID_EXTRUDER c=0 r=0 break; } } @@ -5943,7 +5943,7 @@ Sigma_Exit: delay_keep_alive(4); if (millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) { - lcd_display_message_fullscreen_P(MSG_PRESS_TO_PREHEAT); + lcd_display_message_fullscreen_P(_i("Press knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4 wait_for_user_state = 1; setTargetHotend(0, 0); setTargetHotend(0, 1); @@ -6083,8 +6083,8 @@ Sigma_Exit: WRITE(BEEPER, LOW); KEEPALIVE_STATE(PAUSED_FOR_USER); - lcd_change_fil_state = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_UNLOAD_SUCCESSFUL, false, true); - if (lcd_change_fil_state == 0) lcd_show_fullscreen_message_and_wait_P(MSG_CHECK_IDLER); + lcd_change_fil_state = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Was filament unload successful?"), false, true);////MSG_UNLOAD_SUCCESSFUL c=20 r=2 + if (lcd_change_fil_state == 0) lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually."));////MSG_CHECK_IDLER c=20 r=4 //lcd_return_to_status(); lcd_update_enable(true); @@ -6729,7 +6729,7 @@ Sigma_Exit: SERIAL_ECHO_START; SERIAL_ECHOPGM("T"); SERIAL_PROTOCOLLN((int)tmp_extruder); - SERIAL_ECHOLNRPGM(MSG_INVALID_EXTRUDER); + SERIAL_ECHOLNRPGM(_n("Invalid extruder"));////MSG_INVALID_EXTRUDER c=0 r=0 } else { boolean make_move = false; @@ -6761,7 +6761,7 @@ Sigma_Exit: } #endif SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_ACTIVE_EXTRUDER); + SERIAL_ECHORPGM(_n("Active Extruder: "));////MSG_ACTIVE_EXTRUDER c=0 r=0 SERIAL_PROTOCOLLN((int)active_extruder); } @@ -6831,7 +6831,7 @@ void FlushSerialRequestResend() { //char cmdbuffer[bufindr][100]="Resend:"; MYSERIAL.flush(); - SERIAL_PROTOCOLRPGM(MSG_RESEND); + SERIAL_PROTOCOLRPGM(_i("Resend: "));////MSG_RESEND c=0 r=0 SERIAL_PROTOCOLLN(gcode_LastN + 1); previous_millis_cmd = millis(); SERIAL_PROTOCOLLNRPGM(MSG_OK); @@ -7152,7 +7152,7 @@ static void handleSafetyTimer() { setTargetBed(0); setTargetHotend(0, 0); - lcd_show_fullscreen_message_and_wait_P(MSG_BED_HEATING_SAFETY_DISABLED); + lcd_show_fullscreen_message_and_wait_P(_i("Heating disabled by safety timer."));////MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 } } #endif //SAFETYTIMER @@ -7308,12 +7308,12 @@ void kill(const char *full_screen_message, unsigned char id) pinMode(PS_ON_PIN,INPUT); #endif SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_ERR_KILLED); + SERIAL_ERRORLNRPGM(_i("Printer halted. kill() called!"));////MSG_ERR_KILLED c=0 r=0 if (full_screen_message != NULL) { SERIAL_ERRORLNRPGM(full_screen_message); lcd_display_message_fullscreen_P(full_screen_message); } else { - LCD_ALERTMESSAGERPGM(MSG_KILLED); + LCD_ALERTMESSAGERPGM(_i("KILLED. "));////MSG_KILLED c=0 r=0 } // FMC small patch to update the LCD before ending @@ -7426,19 +7426,19 @@ bool setTargetedHotend(int code){ SERIAL_ECHO_START; switch(code){ case 104: - SERIAL_ECHORPGM(MSG_M104_INVALID_EXTRUDER); + SERIAL_ECHORPGM(_i("M104 Invalid extruder "));////MSG_M104_INVALID_EXTRUDER c=0 r=0 break; case 105: - SERIAL_ECHO(MSG_M105_INVALID_EXTRUDER); + SERIAL_ECHO(_i("M105 Invalid extruder "));////MSG_M105_INVALID_EXTRUDER c=0 r=0 break; case 109: - SERIAL_ECHO(MSG_M109_INVALID_EXTRUDER); + SERIAL_ECHO(_i("M109 Invalid extruder "));////MSG_M109_INVALID_EXTRUDER c=0 r=0 break; case 218: - SERIAL_ECHO(MSG_M218_INVALID_EXTRUDER); + SERIAL_ECHO(_i("M218 Invalid extruder "));////MSG_M218_INVALID_EXTRUDER c=0 r=0 break; case 221: - SERIAL_ECHO(MSG_M221_INVALID_EXTRUDER); + SERIAL_ECHO(_i("M221 Invalid extruder "));////MSG_M221_INVALID_EXTRUDER c=0 r=0 break; } SERIAL_PROTOCOLLN((int)tmp_extruder); @@ -8209,7 +8209,7 @@ void recover_print(uint8_t automatic) { char cmd[30]; lcd_update_enable(true); lcd_update(2); - lcd_setstatuspgm(MSG_RECOVERING_PRINT); + lcd_setstatuspgm(_i("Recovering print "));////MSG_RECOVERING_PRINT c=20 r=1 recover_machine_state_after_power_panic(); diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 740a9cc6..5569cf88 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -94,7 +94,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m if (!dir.open(parent, lfilename, O_READ)) { if (lsAction == LS_SerialPrint) { //SERIAL_ECHO_START(); - //SERIAL_ECHOPGM(MSG_SD_CANT_OPEN_SUBDIR); + //SERIAL_ECHOPGM(_i("Cannot open subdir"));////MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 //SERIAL_ECHOLN(lfilename); } } @@ -183,23 +183,23 @@ void CardReader::initsd() { //if (!card.init(SPI_HALF_SPEED,SDSS)) SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(MSG_SD_INIT_FAIL); + SERIAL_ECHOLNRPGM(_i("SD init fail"));////MSG_SD_INIT_FAIL c=0 r=0 } else if (!volume.init(&card)) { SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_SD_VOL_INIT_FAIL); + SERIAL_ERRORLNRPGM(_i("volume.init failed"));////MSG_SD_VOL_INIT_FAIL c=0 r=0 } else if (!root.openRoot(&volume)) { SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_SD_OPENROOT_FAIL); + SERIAL_ERRORLNRPGM(_i("openRoot failed"));////MSG_SD_OPENROOT_FAIL c=0 r=0 } else { cardOK = true; SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(MSG_SD_CARD_OK); + SERIAL_ECHOLNRPGM(_i("SD card ok"));////MSG_SD_CARD_OK c=0 r=0 } workDir=root; curDir=&root; @@ -392,13 +392,13 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) if (file.open(curDir, fname, O_READ)) { filesize = file.fileSize(); - SERIAL_PROTOCOLRPGM(MSG_SD_FILE_OPENED); + SERIAL_PROTOCOLRPGM(_i("File opened: "));////MSG_SD_FILE_OPENED c=0 r=0 SERIAL_PROTOCOL(fname); - SERIAL_PROTOCOLRPGM(MSG_SD_SIZE); + SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE c=0 r=0 SERIAL_PROTOCOLLN(filesize); sdpos = 0; - SERIAL_PROTOCOLLNRPGM(MSG_SD_FILE_SELECTED); + SERIAL_PROTOCOLLNRPGM(_i("File selected"));////MSG_SD_FILE_SELECTED c=0 r=0 getfilename(0, fname); lcd_setstatus(longFilename[0] ? longFilename : fname); lcd_setstatus("SD-PRINTING "); @@ -421,7 +421,7 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) else { saving = true; - SERIAL_PROTOCOLRPGM(MSG_SD_WRITE_TO_FILE); + SERIAL_PROTOCOLRPGM(_i("Writing to file: "));////MSG_SD_WRITE_TO_FILE c=0 r=0 SERIAL_PROTOCOLLN(name); lcd_setstatus(fname); } @@ -513,7 +513,7 @@ void CardReader::getStatus() if(sdprinting){ SERIAL_PROTOCOL(longFilename); SERIAL_PROTOCOLPGM("\n"); - SERIAL_PROTOCOLRPGM(MSG_SD_PRINTING_BYTE); + SERIAL_PROTOCOLRPGM(_i("SD printing byte "));////MSG_SD_PRINTING_BYTE c=0 r=0 SERIAL_PROTOCOL(sdpos); SERIAL_PROTOCOLPGM("/"); SERIAL_PROTOCOLLN(filesize); @@ -673,7 +673,7 @@ void CardReader::chdir(const char * relpath) if(!newfile.open(*parent,relpath, O_READ)) { SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_SD_CANT_ENTER_SUBDIR); + SERIAL_ECHORPGM(_i("Cannot enter subdir: "));////MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 SERIAL_ECHOLN(relpath); } else @@ -748,14 +748,14 @@ void CardReader::presort() { // Never sort more than the max allowed // If you use folders to organize, 20 may be enough if (fileCnt > SDSORT_LIMIT) { - lcd_show_fullscreen_message_and_wait_P(MSG_FILE_CNT); + lcd_show_fullscreen_message_and_wait_P(_i("Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."));////MSG_FILE_CNT c=20 r=4 fileCnt = SDSORT_LIMIT; } lcd_implementation_clear(); #if !SDSORT_USES_RAM lcd_set_progress(); #endif - lcd_print_at_PGM(0, 1, MSG_SORTING); + lcd_print_at_PGM(0, 1, _i("Sorting files"));////MSG_SORTING c=20 r=1 // Sort order is always needed. May be static or dynamic. #if SDSORT_DYNAMIC_RAM diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index 7daec45b..65c59198 100644 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -425,7 +425,7 @@ void get_command() // M110 - set current line number. // Line numbers not sent in succession. SERIAL_ERROR_START; - SERIAL_ERRORRPGM(MSG_ERR_LINE_NO); + SERIAL_ERRORRPGM(_n("Line Number is not Last Line Number+1, Last Line: "));////MSG_ERR_LINE_NO c=0 r=0 SERIAL_ERRORLN(gcode_LastN); //Serial.println(gcode_N); FlushSerialRequestResend(); @@ -441,7 +441,7 @@ void get_command() checksum = checksum^(*p++); if (int(strtol(strchr_pointer+1, NULL, 10)) != int(checksum)) { SERIAL_ERROR_START; - SERIAL_ERRORRPGM(MSG_ERR_CHECKSUM_MISMATCH); + SERIAL_ERRORRPGM(_i("checksum mismatch, Last Line: "));////MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 SERIAL_ERRORLN(gcode_LastN); FlushSerialRequestResend(); serial_count = 0; @@ -453,7 +453,7 @@ void get_command() else { SERIAL_ERROR_START; - SERIAL_ERRORRPGM(MSG_ERR_NO_CHECKSUM); + SERIAL_ERRORRPGM(_i("No Checksum with line number, Last Line: "));////MSG_ERR_NO_CHECKSUM c=0 r=0 SERIAL_ERRORLN(gcode_LastN); FlushSerialRequestResend(); serial_count = 0; @@ -470,7 +470,7 @@ void get_command() { SERIAL_ERROR_START; - SERIAL_ERRORRPGM(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM); + SERIAL_ERRORRPGM(_n("No Line Number with checksum, Last Line: "));////MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM c=0 r=0 SERIAL_ERRORLN(gcode_LastN); serial_count = 0; return; @@ -580,7 +580,7 @@ void get_command() serial_count >= (MAX_CMD_SIZE - 1) || n==-1) { if(card.eof()){ - SERIAL_PROTOCOLLNRPGM(MSG_FILE_PRINTED); + SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED c=0 r=0 stoptime=millis(); char time[30]; unsigned long t=(stoptime-starttime-pause_time)/1000; diff --git a/Firmware/config.h b/Firmware/config.h index e6430ee6..1a2b1ebd 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -18,4 +18,10 @@ #define TMC2130_SPCR SPI_SPCR(TMC2130_SPI_RATE, 1, 1, 1, 0) #define TMC2130_SPSR SPI_SPSR(TMC2130_SPI_RATE) +//LANG - Multi-language support +#define LANG_MODE 0 // primary language only +//#define LANG_MODE 1 // sec. language support +#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12kb) + + #endif //_CONFIG_H diff --git a/Firmware/language.c b/Firmware/language.c new file mode 100644 index 00000000..d992b87e --- /dev/null +++ b/Firmware/language.c @@ -0,0 +1,63 @@ +//language.c +#include "language.h" +#include +#include + + +// Currectly active language selection. +unsigned char lang_selected = 0; + +#if (LANG_MODE == 0) //primary language only +#else //(LANG_MODE == 0) +//reserved xx kbytes for secondary language table +static const char _SEC_LANG[LANG_SIZE_RESERVED] PROGMEM_I2 = "_SEC_LANG"; +#endif //(LANG_MODE == 0) + +//lang_table_t structure - 16byte header +typedef struct +{ + struct + { + uint32_t magic; + uint16_t size; + uint16_t count; + uint16_t checksum; + uint16_t reserved0; + uint32_t reserved1; + } header; + uint16_t table[]; +} lang_table_t; + +//lang_table pointer +lang_table_t* lang_table = 0; + + +const char* lang_get_translation(const char* s) +{ + if (lang_selected == 0) return s + 2; //primary language selected + if (lang_table == 0) return s + 2; //sec. lang table not found + uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id + if (ui == 0xffff) return s + 2; //translation not found + ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset + return (const char*)((char*)lang_table + ui + 16); //return calculated pointer +} + +const char* lang_select(unsigned char lang) +{ +#if (LANG_MODE == 0) //primary language only + return 0; +#else //(LANG_MODE == 0) + if (lang == 0) //primary language + { + lang_table = 0; + lang_selected = 0; + return; + } + uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space + ui += 0x0100; //add 1 page + ui &= 0xff00; //align to page + lang_table = ui; //set table pointer + ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16)))); //read relative offset of first string (language name) + return (const char*)((char*)lang_table + ui + 16); //return calculated pointer +#endif //(LANG_MODE == 0) +} \ No newline at end of file diff --git a/Firmware/language.h b/Firmware/language.h index cff631d8..add874d6 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -1,6 +1,9 @@ +//language.h #ifndef LANGUAGE_H #define LANGUAGE_H +#include "config.h" + #define PROTOCOL_VERSION "1.0" #ifdef CUSTOM_MENDEL_NAME @@ -9,8 +12,6 @@ #define MACHINE_NAME "Mendel" #endif - - #ifndef MACHINE_UUID #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" #endif @@ -20,14 +21,67 @@ #define STRINGIFY_(n) #n #define STRINGIFY(n) STRINGIFY_(n) +#if (LANG_MODE == 0) +//#define _i PSTR +//#define _I(s) (__extension__({static const char __c[] __attribute__((section("Txt_i"))) = s; &__c[0];})) +#endif //(LANG_MODE == 0) -// Common serial messages -#define MSG_MARLIN "Marlin" +//section progmem0 will be used for localized translated strings +#define PROGMEM_I2 __attribute__((section(".progmem0"))) +//section progmem1 will be used for localized strings in english +#define PROGMEM_I1 __attribute__((section(".progmem1"))) +//section progmem2 will be used for not localized strings in english +#define PROGMEM_N1 __attribute__((section(".progmem2"))) -// Serial Console Messages (do not translate those!) +#if (LANG_MODE == 0) //primary language only +#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = s; &__c[0];})) +#define ISTR(s) s +#define _i(s) _I(s) +#define _T(s) s +#else //(LANG_MODE == 0) +#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff"s; &__c[0];})) +#define ISTR(s) "\xff\xff"s +#define _i(s) lang_get_translation(_I(s)) +#define _T(s) lang_get_translation(s) +#endif //(LANG_MODE == 0) +#define _N(s) (__extension__({static const char __c[] PROGMEM_N1 = s; &__c[0];})) +#define _n(s) _N(s) -// LCD Menu Messages -#include "language_all.h" +// Language indices into their particular symbol tables. +#define LANG_ID_EN 0 +#define LANG_ID_CZ 1 +// Language is not defined and it shall be selected from the menu. +#define LANG_ID_FORCE_SELECTION 254 +// Language is not defined on a virgin RAMBo board. +#define LANG_ID_UNDEFINED 255 + +// Default language ID, if no language is selected. +#define LANG_ID_DEFAULT LANG_ID_CZ + +// Number of languages available in the language table. +#define LANG_NUM 2 + + +#if defined(__cplusplus) +extern "C" { +#endif //defined(__cplusplus) + +// Currectly active language selection. +extern unsigned char lang_selected; + +extern const char* lang_get_translation(const char* s); +extern const char* lang_select(unsigned char lang); + +#if defined(__cplusplus) +} +#endif //defined(__cplusplus) + +#define CAT2(_s1, _s2) _s1 +#define CAT4(_s1, _s2, _s3, _s4) _s1 +#define MSG_LANGUAGE_NAME_EXPLICIT(i) ((i==0)?PSTR("ENG"):PSTR("CZE")) + +#include "messages.h" #endif //__LANGUAGE_H + diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index cadd28de..80b5642a 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2197,7 +2197,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); if (iteration > 0) { - lcd_print_at_PGM(0, next_line + 1, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION); + lcd_print_at_PGM(0, next_line + 1, _i("Iteration "));////MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 lcd_implementation_print(int(iteration + 1)); } #endif /* MESH_BED_CALIBRATION_SHOW_LCD */ @@ -2455,7 +2455,7 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8 #ifdef MESH_BED_CALIBRATION_SHOW_LCD uint8_t next_line; - lcd_display_message_fullscreen_P(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1, next_line); + lcd_display_message_fullscreen_P(_i("Improving bed calibration point"), next_line);////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 if (next_line > 3) next_line = 3; #endif /* MESH_BED_CALIBRATION_SHOW_LCD */ @@ -2468,7 +2468,7 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8 // Print the decrasing ID of the measurement point. #ifdef MESH_BED_CALIBRATION_SHOW_LCD lcd_implementation_print_at(0, next_line, mesh_point+1); - lcd_printPGM(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2); + lcd_printPGM(_i(" of 4"));////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 #endif /* MESH_BED_CALIBRATION_SHOW_LCD */ // Move up. diff --git a/Firmware/messages.c b/Firmware/messages.c new file mode 100644 index 00000000..25603435 --- /dev/null +++ b/Firmware/messages.c @@ -0,0 +1,120 @@ +//messages.c +#include "language.h" + +//this is because we need include Configuration_prusa.h (CUSTOM_MENDEL_NAME) +#define bool char +#define true 1 +#define false 0 +#include "Configuration_prusa.h" + +//internationalized messages +const char MSG_ALL[] PROGMEM_I1 = ISTR("All"); ////c=19 r=1 +const char MSG_AUTO_HOME[] PROGMEM_I1 = ISTR("Auto home"); ////c=0 r=0 +const char MSG_AUTO_MODE_ON[] PROGMEM_I1 = ISTR("Mode [auto power]"); ////c=0 r=0 +const char MSG_BABYSTEP_Z[] PROGMEM_I1 = ISTR("Live adjust Z"); ////c=0 r=0 +const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."); ////c=20 r=12 +const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////c=0 r=0 +const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////c=0 r=0 +const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////c=0 r=0 +const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=4 +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8 +const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2 +const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////c=0 r=0 +const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8 +const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////c=0 r=0 +const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1 +const char MSG_CRASHDETECT_NA[] PROGMEM_I1 = ISTR("Crash det. [N/A]"); ////c=0 r=0 +const char MSG_CRASHDETECT_OFF[] PROGMEM_I1 = ISTR("Crash det. [off]"); ////c=0 r=0 +const char MSG_CRASHDETECT_ON[] PROGMEM_I1 = ISTR("Crash det. [on]"); ////c=0 r=0 +const char MSG_ENDSTOP_HIT[] PROGMEM_I1 = ISTR("TRIGGERED"); ////c=0 r=0 +const char MSG_ENDSTOP_OPEN[] PROGMEM_I1 = ISTR("open"); ////c=0 r=0 +const char MSG_ENDSTOPS_HIT[] PROGMEM_I1 = ISTR("endstops hit: "); ////c=0 r=0 +const char MSG_Enqueing[] PROGMEM_I1 = ISTR("enqueing \""); ////c=0 r=0 +const char MSG_ERR_STOPPED[] PROGMEM_I1 = ISTR("Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"); ////c=0 r=0 +const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////c=0 r=0 +const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17 r=1 +const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14 r=0 +const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2 +const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4 +const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4 +const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4 +const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into extruder 4. Click when done."); ////c=20 r=4 +const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////c=0 r=0 +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=60 r=0 +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////c=14 r=0 +const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20 r=1 +const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8 +const char MSG_FSENS_AUTOLOAD_NA[] PROGMEM_I1 = ISTR("F. autoload [N/A]"); ////c=17 r=1 +const char MSG_FSENSOR_OFF[] PROGMEM_I1 = ISTR("Fil. sensor [off]"); ////c=0 r=0 +const char MSG_FSENSOR_ON[] PROGMEM_I1 = ISTR("Fil. sensor [on]"); ////c=0 r=0 +const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////c=0 r=0 +const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20 r=0 +const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////c=0 r=0 +const char MSG_CHOOSE_EXTRUDER[] PROGMEM_I1 = ISTR("Choose extruder:"); ////c=20 r=1 +const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////c=17 r=0 +const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20 r=0 +const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25 r=1 +const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////c=0 r=0 +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=60 r=0 +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9"); ////c=14 r=0 +const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////c=0 r=0 +const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////c=0 r=0 +const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////c=0 r=0 +const char MSG_OK[] PROGMEM_I1 = ISTR("ok"); ////c=0 r=0 +const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=8 +const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4 +const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20 r=0 +const char MSG_POWERUP[] PROGMEM_I1 = ISTR("PowerUp"); ////c=0 r=0 +const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20 r=0 +const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////c=20 r=4 +const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20 r=0 +const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4 +const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2 +const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////c=0 r=0 +const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4 +const char MSG_SD_ERR_WRITE_TO_FILE[] PROGMEM_I1 = ISTR("error writing to file"); ////c=0 r=0 +const char MSG_SD_OPEN_FILE_FAIL[] PROGMEM_I1 = ISTR("open failed, File: "); ////c=0 r=0 +const char MSG_SD_WORKDIR_FAIL[] PROGMEM_I1 = ISTR("workDir open failed"); ////c=0 r=0 +const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20 r=0 +const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20 r=0 +const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20 r=0 +const char MSG_SELFTEST_FAN[] PROGMEM_I1 = ISTR("Fan test"); ////c=20 r=0 +const char MSG_SELFTEST_FAN_NO[] PROGMEM_I1 = ISTR("Not spinning"); ////c=19 r=0 +const char MSG_SELFTEST_FAN_YES[] PROGMEM_I1 = ISTR("Spinning"); ////c=19 r=0 +const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed "); ////c=20 r=0 +const char MSG_SELFTEST_CHECK_FSENSOR[] PROGMEM_I1 = ISTR("Checking sensors "); ////c=20 r=0 +const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////c=0 r=0 +const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////c=0 r=0 +const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////c=0 r=0 +const char MSG_SILENT_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [high power]"); ////c=0 r=0 +const char MSG_SILENT_MODE_ON[] PROGMEM_I1 = ISTR("Mode [silent]"); ////c=0 r=0 +const char MSG_STEALTH_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [Normal]"); ////c=0 r=0 +const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode [Stealth]"); ////c=0 r=0 +const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2 +const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////c=0 r=0 +const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////c=0 r=0 +const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal. "); ////c=20 r=1 +const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12 +const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17 r=0 +const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1 +const char MSG_WATCH[] PROGMEM_I1 = ISTR("Info screen"); ////c=0 r=0 +const char MSG_WIZARD_CALIBRATION_FAILED[] PROGMEM_I1 = ISTR("Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."); ////c=20 r=8 +const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); ////c=20 r=8 +const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////c=20 r=3 +const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////c=20 r=8 +const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////c=0 r=0 +const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " ready."); ////c=20 r=0 +//not internationalized messages +const char MSG_BROWNOUT_RESET[] PROGMEM_N1 = " Brown out Reset"; ////c=0 r=0 +const char MSG_EXTERNAL_RESET[] PROGMEM_N1 = " External Reset"; ////c=0 r=0 +const char MSG_FILE_SAVED[] PROGMEM_N1 = "Done saving file."; ////c=0 r=0 +const char MSG_OFF[] PROGMEM_N1 = "Off"; ////c=0 r=0 +const char MSG_ON[] PROGMEM_N1 = "On "; ////c=0 r=0 +const char MSG_POSITION_UNKNOWN[] PROGMEM_N1 = "Home X/Y before Z"; ////c=0 r=0 +const char MSG_SOFTWARE_RESET[] PROGMEM_N1 = " Software Reset"; ////c=0 r=0 +const char MSG_UNKNOWN_COMMAND[] PROGMEM_N1 = "Unknown command: \""; ////c=0 r=0 +const char MSG_WATCHDOG_RESET[] PROGMEM_N1 = " Watchdog Reset"; ////c=0 r=0 +const char MSG_Z_MAX[] PROGMEM_N1 = "z_max: "; ////c=0 r=0 +const char MSG_Z_MIN[] PROGMEM_N1 = "z_min: "; ////c=0 r=0 +const char MSG_ZPROBE_OUT[] PROGMEM_N1 = "Z probe out. bed"; ////c=0 r=0 +const char MSG_ZPROBE_ZOFFSET[] PROGMEM_N1 = "Z Offset"; ////c=0 r=0 diff --git a/Firmware/messages.h b/Firmware/messages.h new file mode 100644 index 00000000..3b2c4bff --- /dev/null +++ b/Firmware/messages.h @@ -0,0 +1,117 @@ +//messages.h + +// Common serial messages +#define MSG_MARLIN "Marlin" + +// LCD Menu Messages +//internationalized messages +extern const char MSG_ALL[]; +extern const char MSG_AUTO_HOME[]; +extern const char MSG_AUTO_MODE_ON[]; +extern const char MSG_BABYSTEP_Z[]; +extern const char MSG_BABYSTEP_Z_NOT_SET[]; +extern const char MSG_BED[]; +extern const char MSG_BED_DONE[]; +extern const char MSG_BED_HEATING[]; +extern const char MSG_BED_LEVELING_FAILED_POINT_LOW[]; +extern const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[]; +extern const char MSG_CALIBRATE_Z_AUTO[]; +extern const char MSG_CARD_MENU[]; +extern const char MSG_CONFIRM_NOZZLE_CLEAN[]; +extern const char MSG_COOLDOWN[]; +extern const char MSG_CRASH_DETECTED[]; +extern const char MSG_CRASHDETECT_NA[]; +extern const char MSG_CRASHDETECT_OFF[]; +extern const char MSG_CRASHDETECT_ON[]; +extern const char MSG_ENDSTOP_HIT[]; +extern const char MSG_ENDSTOP_OPEN[]; +extern const char MSG_ENDSTOPS_HIT[]; +extern const char MSG_Enqueing[]; +extern const char MSG_ERR_STOPPED[]; +extern const char MSG_ERROR[]; +extern const char MSG_EXTRUDER[]; +extern const char MSG_FAN_SPEED[]; +extern const char MSG_FILAMENT_CLEAN[]; +extern const char MSG_FILAMENT_LOADING_T0[]; +extern const char MSG_FILAMENT_LOADING_T1[]; +extern const char MSG_FILAMENT_LOADING_T2[]; +extern const char MSG_FILAMENT_LOADING_T3[]; +extern const char MSG_FILAMENTCHANGE[]; +extern const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[]; +extern const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[]; +extern const char MSG_FINISHING_MOVEMENTS[]; +extern const char MSG_FOLLOW_CALIBRATION_FLOW[]; +extern const char MSG_FSENS_AUTOLOAD_NA[]; +extern const char MSG_FSENSOR_OFF[]; +extern const char MSG_FSENSOR_ON[]; +extern const char MSG_HEATING[]; +extern const char MSG_HEATING_COMPLETE[]; +extern const char MSG_HOMEYZ[]; +extern const char MSG_CHOOSE_EXTRUDER[]; +extern const char MSG_LOAD_FILAMENT[]; +extern const char MSG_LOADING_FILAMENT[]; +extern const char MSG_M117_V2_CALIBRATION[]; +extern const char MSG_MAIN[]; +extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[]; +extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[]; +extern const char MSG_MENU_CALIBRATION[]; +extern const char MSG_NO[]; +extern const char MSG_NOZZLE[]; +extern const char MSG_OK[]; +extern const char MSG_PAPER[]; +extern const char MSG_PLACE_STEEL_SHEET[]; +extern const char MSG_PLEASE_WAIT[]; +extern const char MSG_POWERUP[]; +extern const char MSG_PREHEAT_NOZZLE[]; +extern const char MSG_PRESS_TO_UNLOAD[]; +extern const char MSG_PRINT_ABORTED[]; +extern const char MSG_PULL_OUT_FILAMENT[]; +extern const char MSG_RECOVER_PRINT[]; +extern const char MSG_REFRESH[]; +extern const char MSG_REMOVE_STEEL_SHEET[]; +extern const char MSG_SD_ERR_WRITE_TO_FILE[]; +extern const char MSG_SD_OPEN_FILE_FAIL[]; +extern const char MSG_SD_WORKDIR_FAIL[]; +extern const char MSG_SELFTEST_COOLING_FAN[]; +extern const char MSG_SELFTEST_EXTRUDER_FAN[]; +extern const char MSG_SELFTEST_FAILED[]; +extern const char MSG_SELFTEST_FAN[]; +extern const char MSG_SELFTEST_FAN_NO[]; +extern const char MSG_SELFTEST_FAN_YES[]; +extern const char MSG_SELFTEST_CHECK_BED[]; +extern const char MSG_SELFTEST_CHECK_FSENSOR[]; +extern const char MSG_SELFTEST_MOTOR[]; +extern const char MSG_SELFTEST_WIRINGERROR[]; +extern const char MSG_SETTINGS[]; +extern const char MSG_SILENT_MODE_OFF[]; +extern const char MSG_SILENT_MODE_ON[]; +extern const char MSG_STEALTH_MODE_OFF[]; +extern const char MSG_STEALTH_MODE_ON[]; +extern const char MSG_STEEL_SHEET_CHECK[]; +extern const char MSG_STOP_PRINT[]; +extern const char MSG_STOPPED[]; +extern const char MSG_TEMP_CALIBRATION[]; +extern const char MSG_TEMP_CALIBRATION_DONE[]; +extern const char MSG_UNLOAD_FILAMENT[]; +extern const char MSG_UNLOADING_FILAMENT[]; +extern const char MSG_WATCH[]; +extern const char MSG_WIZARD_CALIBRATION_FAILED[]; +extern const char MSG_WIZARD_DONE[]; +extern const char MSG_WIZARD_HEATING[]; +extern const char MSG_WIZARD_QUIT[]; +extern const char MSG_YES[]; +extern const char WELCOME_MSG[]; +//not internationalized messages +extern const char MSG_BROWNOUT_RESET[]; +extern const char MSG_EXTERNAL_RESET[]; +extern const char MSG_FILE_SAVED[]; +extern const char MSG_OFF[]; +extern const char MSG_ON[]; +extern const char MSG_POSITION_UNKNOWN[]; +extern const char MSG_SOFTWARE_RESET[]; +extern const char MSG_UNKNOWN_COMMAND[]; +extern const char MSG_WATCHDOG_RESET[]; +extern const char MSG_Z_MAX[]; +extern const char MSG_Z_MIN[]; +extern const char MSG_ZPROBE_OUT[]; +extern const char MSG_ZPROBE_ZOFFSET[]; diff --git a/Firmware/planner.cpp b/Firmware/planner.cpp index b2f85074..a2c8f9c2 100644 --- a/Firmware/planner.cpp +++ b/Firmware/planner.cpp @@ -742,7 +742,7 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate de_float = 0; #endif SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(MSG_ERR_COLD_EXTRUDE_STOP); + SERIAL_ECHOLNRPGM(_i(" cold extrusion prevented"));////MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 } #ifdef PREVENT_LENGTHY_EXTRUDE @@ -754,7 +754,7 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate de_float = 0; #endif SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(MSG_ERR_LONG_EXTRUDE_STOP); + SERIAL_ECHOLNRPGM(_n(" too long extrusion prevented"));////MSG_ERR_LONG_EXTRUDE_STOP c=0 r=0 } #endif } diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 99358989..623c4bc7 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -342,7 +342,7 @@ FORCE_INLINE unsigned short calc_timer(uint16_t step_rate) { timer = (unsigned short)pgm_read_word_near(table_address); timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3); } - if(timer < 100) { timer = 100; MYSERIAL.print(MSG_STEPPER_TOO_HIGH); MYSERIAL.println(step_rate); }//(20kHz this should never happen) + if(timer < 100) { timer = 100; MYSERIAL.print(_i("Steprate too high: ")); MYSERIAL.println(step_rate); }//(20kHz this should never happen)////MSG_STEPPER_TOO_HIGH c=0 r=0 return timer; } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f190149e..2c7f5ec5 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -604,7 +604,7 @@ static void lcd_status_screen() /*if (farm_mode && !printer_connected) { lcd.setCursor(0, 3); - lcd_printPGM(MSG_PRINTER_DISCONNECTED); + lcd_printPGM(_i("Printer disconnected"));////MSG_PRINTER_DISCONNECTED c=20 r=1 }*/ @@ -639,7 +639,7 @@ void lcd_commands() } } if (lcd_commands_step == 1 && !blocks_queued() && !homing_flag) { - lcd_setstatuspgm(MSG_PRINT_PAUSED); + lcd_setstatuspgm(_i("Print paused"));////MSG_PRINT_PAUSED c=20 r=1 isPrintPaused = true; long_pause(); lcd_commands_type = 0; @@ -703,7 +703,7 @@ void lcd_commands() strcat(cmd1, ftostr32(pause_lastpos[Y_AXIS])); enquecommand(cmd1); - lcd_setstatuspgm(MSG_RESUMING_PRINT); + lcd_setstatuspgm(_i("Resuming print"));////MSG_RESUMING_PRINT c=20 r=1 lcd_commands_step = 3; } } @@ -1363,13 +1363,13 @@ void lcd_commands() strcpy(cmd1, "M303 E0 S"); strcat(cmd1, ftostr3(pid_temp)); enquecommand(cmd1); - lcd_setstatuspgm(MSG_PID_RUNNING); + lcd_setstatuspgm(_i("PID cal. "));////MSG_PID_RUNNING c=20 r=1 lcd_commands_step = 2; } if (lcd_commands_step == 2 && pid_tuning_finished) { //saving to eeprom pid_tuning_finished = false; custom_message_state = 0; - lcd_setstatuspgm(MSG_PID_FINISHED); + lcd_setstatuspgm(_i("PID cal. finished"));////MSG_PID_FINISHED c=20 r=1 if (_Kp != 0 || _Ki != 0 || _Kd != 0) { strcpy(cmd1, "M301 P"); strcat(cmd1, ftostr32(_Kp)); @@ -1534,7 +1534,7 @@ static void lcd_menu_extruder_info() // Display Nozzle fan RPM lcd.setCursor(0, 0); - lcd_printPGM(MSG_INFO_NOZZLE_FAN); + lcd_printPGM(_i("Nozzle FAN:"));////MSG_INFO_NOZZLE_FAN c=11 r=1 lcd.setCursor(11, 0); lcd.print(" "); @@ -1546,7 +1546,7 @@ static void lcd_menu_extruder_info() #if (defined(TACH_1)) lcd.setCursor(0, 1); - lcd_printPGM(MSG_INFO_PRINT_FAN); + lcd_printPGM(_i("Print FAN: "));////MSG_INFO_PRINT_FAN c=11 r=1 lcd.setCursor(11, 1); lcd.print(" "); @@ -1817,15 +1817,15 @@ static void lcd_support_menu() MENU_ITEM(back, PSTR("FW - " FW_version), 0); }*/ - MENU_ITEM(back, MSG_PRUSA3D, 0); - MENU_ITEM(back, MSG_PRUSA3D_FORUM, 0); - MENU_ITEM(back, MSG_PRUSA3D_HOWTO, 0); + MENU_ITEM(back, _i("prusa3d.com"), 0);////MSG_PRUSA3D c=0 r=0 + MENU_ITEM(back, _i("forum.prusa3d.com"), 0);////MSG_PRUSA3D_FORUM c=0 r=0 + MENU_ITEM(back, _i("howto.prusa3d.com"), 0);////MSG_PRUSA3D_HOWTO c=0 r=0 MENU_ITEM(back, PSTR("------------"), 0); MENU_ITEM(back, PSTR(FILAMENT_SIZE), 0); MENU_ITEM(back, PSTR(ELECTRONICS),0); MENU_ITEM(back, PSTR(NOZZLE_TYPE),0); MENU_ITEM(back, PSTR("------------"), 0); - MENU_ITEM(back, MSG_DATE, 0); + MENU_ITEM(back, _i("Date:"), 0);////MSG_DATE c=17 r=1 MENU_ITEM(back, PSTR(__DATE__), 0); // Show the FlashAir IP address, if the card is available. @@ -1836,17 +1836,17 @@ static void lcd_support_menu() } #ifndef MK1BP MENU_ITEM(back, PSTR("------------"), 0); - MENU_ITEM(submenu, MSG_XYZ_DETAILS, lcd_menu_xyz_y_min); - MENU_ITEM(submenu, MSG_INFO_EXTRUDER, lcd_menu_extruder_info); + MENU_ITEM(submenu, _i("XYZ cal. details"), lcd_menu_xyz_y_min);////MSG_XYZ_DETAILS c=19 r=1 + MENU_ITEM(submenu, _i("Extruder info"), lcd_menu_extruder_info);////MSG_INFO_EXTRUDER c=15 r=1 #ifdef TMC2130 - MENU_ITEM(submenu, MSG_MENU_BELT_STATUS, lcd_menu_belt_status); + MENU_ITEM(submenu, _i("Belt status"), lcd_menu_belt_status);////MSG_MENU_BELT_STATUS c=15 r=1 #endif //TMC2130 - MENU_ITEM(submenu, MSG_MENU_TEMPERATURES, lcd_menu_temperatures); + MENU_ITEM(submenu, _i("Temperatures"), lcd_menu_temperatures);////MSG_MENU_TEMPERATURES c=15 r=1 #if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) - MENU_ITEM(submenu, MSG_MENU_VOLTAGES, lcd_menu_voltages); + MENU_ITEM(submenu, _i("Voltages"), lcd_menu_voltages);////MSG_MENU_VOLTAGES c=15 r=1 #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN #ifdef DEBUG_BUILD @@ -1897,7 +1897,7 @@ void lcd_change_filament() { lcd.setCursor(0, 1); - lcd_printPGM(MSG_CHANGING_FILAMENT); + lcd_printPGM(_i("Changing filament!"));////MSG_CHANGING_FILAMENT c=20 r=0 } @@ -1909,12 +1909,12 @@ void lcd_wait_interact() { lcd.setCursor(0, 1); #ifdef SNMM - lcd_printPGM(MSG_PREPARE_FILAMENT); + lcd_printPGM(_i("Prepare new filament"));////MSG_PREPARE_FILAMENT c=20 r=1 #else - lcd_printPGM(MSG_INSERT_FILAMENT); + lcd_printPGM(_i("Insert filament"));////MSG_INSERT_FILAMENT c=20 r=0 #endif lcd.setCursor(0, 2); - lcd_printPGM(MSG_PRESS); + lcd_printPGM(_i("and press the knob"));////MSG_PRESS c=20 r=0 } @@ -1925,7 +1925,7 @@ void lcd_change_success() { lcd.setCursor(0, 2); - lcd_printPGM(MSG_CHANGE_SUCCESS); + lcd_printPGM(_i("Change success!"));////MSG_CHANGE_SUCCESS c=0 r=0 } @@ -1937,7 +1937,7 @@ void lcd_loading_color() { lcd.setCursor(0, 0); - lcd_printPGM(MSG_LOADING_COLOR); + lcd_printPGM(_i("Loading color"));////MSG_LOADING_COLOR c=0 r=0 lcd.setCursor(0, 2); lcd_printPGM(MSG_PLEASE_WAIT); @@ -2004,7 +2004,7 @@ void lcd_alright() { lcd.setCursor(0, 0); - lcd_printPGM(MSG_CORRECTLY); + lcd_printPGM(_i("Changed correctly?"));////MSG_CORRECTLY c=20 r=0 lcd.setCursor(1, 1); @@ -2012,11 +2012,11 @@ void lcd_alright() { lcd.setCursor(1, 2); - lcd_printPGM(MSG_NOT_LOADED); + lcd_printPGM(_i("Filament not loaded"));////MSG_NOT_LOADED c=19 r=0 lcd.setCursor(1, 3); - lcd_printPGM(MSG_NOT_COLOR); + lcd_printPGM(_i("Color not correct"));////MSG_NOT_COLOR c=0 r=0 lcd.setCursor(0, 1); @@ -2087,7 +2087,7 @@ static void lcd_menu_AutoLoadFilament() if (degHotend0() > EXTRUDE_MINTEMP) { uint8_t nlines; - lcd_display_message_fullscreen_nonBlocking_P(MSG_AUTOLOADING_ENABLED,nlines); + lcd_display_message_fullscreen_nonBlocking_P(_i("Autoloading filament is active, just press the knob and insert filament..."),nlines);////MSG_AUTOLOADING_ENABLED c=20 r=4 } else { @@ -2140,7 +2140,7 @@ void lcd_menu_statistics() int _s = _t - ((_h * 3600) + (_m * 60)); lcd.setCursor(0, 0); - lcd_printPGM(MSG_STATS_FILAMENTUSED); + lcd_printPGM(_i("Filament used: "));////MSG_STATS_FILAMENTUSED c=20 r=0 lcd.setCursor(6, 1); lcd.print(itostr3(_met)); @@ -2149,7 +2149,7 @@ void lcd_menu_statistics() lcd.print("cm"); lcd.setCursor(0, 2); - lcd_printPGM(MSG_STATS_PRINTTIME); + lcd_printPGM(_i("Print time: "));////MSG_STATS_PRINTTIME c=20 r=0 lcd.setCursor(8, 3); lcd.print(itostr2(_h)); @@ -2184,7 +2184,7 @@ void lcd_menu_statistics() lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_STATS_TOTALFILAMENT); + lcd_printPGM(_i("Total filament :"));////MSG_STATS_TOTALFILAMENT c=20 r=0 lcd.setCursor(17 - strlen(ftostr32ns(_filament_m)), 1); lcd.print(ftostr32ns(_filament_m)); @@ -2201,7 +2201,7 @@ void lcd_menu_statistics() lcd.print("m"); lcd.setCursor(0, 2); - lcd_printPGM(MSG_STATS_TOTALPRINTTIME);; + lcd_printPGM(_i("Total print time :"));;////MSG_STATS_TOTALPRINTTIME c=20 r=0 lcd.setCursor(18, 3); lcd.print("m"); @@ -2304,10 +2304,10 @@ static void lcd_move_e() static void lcd_menu_xyz_y_min() { lcd.setCursor(0,0); - lcd_printPGM(MSG_Y_DISTANCE_FROM_MIN); + lcd_printPGM(_i("Y distance from min:"));////MSG_Y_DISTANCE_FROM_MIN c=20 r=1 lcd_print_at_PGM(0, 1, separator); - lcd_print_at_PGM(0, 2, MSG_LEFT); - lcd_print_at_PGM(0, 3, MSG_RIGHT); + lcd_print_at_PGM(0, 2, _i("Left:"));////MSG_LEFT c=12 r=1 + lcd_print_at_PGM(0, 3, _i("Right:"));////MSG_RIGHT c=12 r=1 float distanceMin[2]; count_xyz_details(distanceMin); @@ -2333,18 +2333,18 @@ static void lcd_menu_xyz_skew() angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW)); lcd.setCursor(0,0); - lcd_printPGM(MSG_MEASURED_SKEW); + lcd_printPGM(_i("Measured skew:"));////MSG_MEASURED_SKEW c=15 r=1 if (angleDiff < 100) { lcd.setCursor(15, 0); lcd.print(angleDiff * 180 / M_PI); lcd.print(LCD_STR_DEGREE); }else lcd_print_at_PGM(16, 0, PSTR("N/A")); lcd_print_at_PGM(0, 1, separator); - lcd_print_at_PGM(0, 2, MSG_SLIGHT_SKEW); + lcd_print_at_PGM(0, 2, _i("Slight skew:"));////MSG_SLIGHT_SKEW c=15 r=1 lcd_print_at_PGM(15, 2, PSTR("")); lcd.print(bed_skew_angle_mild * 180 / M_PI); lcd.print(LCD_STR_DEGREE); - lcd_print_at_PGM(0, 3, MSG_SEVERE_SKEW); + lcd_print_at_PGM(0, 3, _i("Severe skew:"));////MSG_SEVERE_SKEW c=15 r=1 lcd_print_at_PGM(15, 3, PSTR("")); lcd.print(bed_skew_angle_extreme * 180 / M_PI); lcd.print(LCD_STR_DEGREE); @@ -2360,7 +2360,7 @@ static void lcd_menu_xyz_skew() static void lcd_menu_xyz_offset() { lcd.setCursor(0,0); - lcd_printPGM(MSG_MEASURED_OFFSET); + lcd_printPGM(_i("[0;0] point offset"));////MSG_MEASURED_OFFSET c=0 r=0 lcd_print_at_PGM(0, 1, separator); lcd_print_at_PGM(0, 2, PSTR("X")); lcd_print_at_PGM(0, 3, PSTR("Y")); @@ -2479,13 +2479,13 @@ static void _lcd_babystep(int axis, const char *msg) } static void lcd_babystep_x() { - _lcd_babystep(X_AXIS, (MSG_BABYSTEPPING_X)); + _lcd_babystep(X_AXIS, (_i("Babystepping X")));////MSG_BABYSTEPPING_X c=0 r=0 } static void lcd_babystep_y() { - _lcd_babystep(Y_AXIS, (MSG_BABYSTEPPING_Y)); + _lcd_babystep(Y_AXIS, (_i("Babystepping Y")));////MSG_BABYSTEPPING_Y c=0 r=0 } static void lcd_babystep_z() { - _lcd_babystep(Z_AXIS, (MSG_BABYSTEPPING_Z)); + _lcd_babystep(Z_AXIS, (_i("Adjusting Z")));////MSG_BABYSTEPPING_Z c=20 r=0 } static void lcd_adjust_bed(); @@ -2561,11 +2561,11 @@ static void lcd_adjust_bed() START_MENU(); MENU_ITEM(back, MSG_SETTINGS, 0); - MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_LEFT, &menuData.adjustBed.left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX); - MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_RIGHT, &menuData.adjustBed.right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX); - MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_FRONT, &menuData.adjustBed.front2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX); - MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_REAR, &menuData.adjustBed.rear2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX); - MENU_ITEM(function, MSG_BED_CORRECTION_RESET, lcd_adjust_bed_reset); + MENU_ITEM_EDIT(int3, _i("Left side [um]"), &menuData.adjustBed.left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14 r=1 + MENU_ITEM_EDIT(int3, _i("Right side[um]"), &menuData.adjustBed.right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14 r=1 + MENU_ITEM_EDIT(int3, _i("Front side[um]"), &menuData.adjustBed.front2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14 r=1 + MENU_ITEM_EDIT(int3, _i("Rear side [um]"), &menuData.adjustBed.rear2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_REAR c=14 r=1 + MENU_ITEM(function, _i("Reset"), lcd_adjust_bed_reset);////MSG_BED_CORRECTION_RESET c=0 r=0 END_MENU(); } @@ -2573,7 +2573,7 @@ void pid_extruder() { lcd_implementation_clear(); lcd.setCursor(1, 0); - lcd_printPGM(MSG_SET_TEMPERATURE); + lcd_printPGM(_i("Set temperature:"));////MSG_SET_TEMPERATURE c=19 r=1 pid_temp += int(encoderPosition); if (pid_temp > HEATER_0_MAXTEMP) pid_temp = HEATER_0_MAXTEMP; if (pid_temp < HEATER_0_MINTEMP) pid_temp = HEATER_0_MINTEMP; @@ -2598,7 +2598,7 @@ void lcd_adjust_z() { lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ADJUSTZ); + lcd_printPGM(_i("Auto adjust Z?"));////MSG_ADJUSTZ c=0 r=0 lcd.setCursor(1, 1); lcd_printPGM(MSG_YES); @@ -2681,7 +2681,7 @@ bool lcd_wait_for_pinda(float temp) { bool target_temp_reached = true; while (current_temperature_pinda > temp){ - lcd_display_message_fullscreen_P(MSG_WAITING_TEMP_PINDA); + lcd_display_message_fullscreen_P(_i("Waiting for PINDA probe cooling"));////MSG_WAITING_TEMP_PINDA c=20 r=3 lcd.setCursor(0, 4); lcd.print(LCD_STR_THERMOMETER[0]); @@ -2717,7 +2717,7 @@ void lcd_wait_for_cool_down() { setTargetHotend(0,0); setTargetBed(0); while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) { - lcd_display_message_fullscreen_P(MSG_WAITING_TEMP); + lcd_display_message_fullscreen_P(_i("Waiting for nozzle and bed cooling"));////MSG_WAITING_TEMP c=20 r=3 lcd.setCursor(0, 4); lcd.print(LCD_STR_THERMOMETER[0]); @@ -2754,7 +2754,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) // Until confirmed by the confirmation dialog. for (;;) { unsigned long previous_millis_cmd = millis(); - const char *msg = only_z ? MSG_MOVE_CARRIAGE_TO_THE_TOP_Z : MSG_MOVE_CARRIAGE_TO_THE_TOP; + const char *msg = only_z ? _i("Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done.") : _i("Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done.");////MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8////MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 const char *msg_next = lcd_display_message_fullscreen_P(msg); const bool multi_screen = msg_next != NULL; unsigned long previous_millis_msg = millis(); @@ -2801,7 +2801,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) // Let the user confirm, that the Z carriage is at the top end stoppers. - int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_CONFIRM_CARRIAGE_AT_THE_TOP, false); + int8_t result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Are left and right Z~carriages all up?"), false);////MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 if (result == -1) goto canceled; else if (result == 1) @@ -3117,31 +3117,31 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui { const char *msg = NULL; if (result == BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND) { - lcd_show_fullscreen_message_and_wait_P(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND); + lcd_show_fullscreen_message_and_wait_P(_i("XYZ calibration failed. Bed calibration point was not found."));////MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 } else if (result == BED_SKEW_OFFSET_DETECTION_FITTING_FAILED) { if (point_too_far_mask == 0) msg = MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED; else if (point_too_far_mask == 2 || point_too_far_mask == 7) // Only the center point or all the three front points. - msg = MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR; + msg = _i("XYZ calibration failed. Front calibration points not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 else if (point_too_far_mask & 1 == 0) // The right and maybe the center point out of reach. - msg = MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR; + msg = _i("XYZ calibration failed. Right front calibration point not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 else // The left and maybe the center point out of reach. - msg = MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR; + msg = _i("XYZ calibration failed. Left front calibration point not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 lcd_show_fullscreen_message_and_wait_P(msg); } else { if (point_too_far_mask != 0) { if (point_too_far_mask == 2 || point_too_far_mask == 7) // Only the center point or all the three front points. - msg = MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR; + msg = _i("XYZ calibration compromised. Front calibration points not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 else if (point_too_far_mask & 1 == 0) // The right and maybe the center point out of reach. - msg = MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR; + msg = _i("XYZ calibration compromised. Right front calibration point not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 else // The left and maybe the center point out of reach. - msg = MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR; + msg = _i("XYZ calibration compromised. Left front calibration point not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 lcd_show_fullscreen_message_and_wait_P(msg); } if (point_too_far_mask == 0 || result > 0) { @@ -3151,13 +3151,13 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui msg = MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED; break; case BED_SKEW_OFFSET_DETECTION_PERFECT: - msg = MSG_BED_SKEW_OFFSET_DETECTION_PERFECT; + msg = _i("XYZ calibration ok. X/Y axes are perpendicular. Congratulations!");////MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 break; case BED_SKEW_OFFSET_DETECTION_SKEW_MILD: - msg = MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD; + msg = _i("XYZ calibration all right. X/Y axes are slightly skewed. Good job!");////MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 break; case BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME: - msg = MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME; + msg = _i("XYZ calibration all right. Skew will be corrected automatically.");////MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 break; } lcd_show_fullscreen_message_and_wait_P(msg); @@ -3187,7 +3187,7 @@ void lcd_temp_cal_show_result(bool result) { else { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); SERIAL_ECHOLNPGM("Temperature calibration failed. Continue with pressing the knob."); - lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CAL_FAILED); + lcd_show_fullscreen_message_and_wait_P(_i("Temperature calibration failed"));////MSG_TEMP_CAL_FAILED c=20 r=8 temp_cal_active = false; eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 0); } @@ -3461,7 +3461,7 @@ void lcd_pick_babystep(){ lcd.setCursor(0, 0); - lcd_printPGM(MSG_PICK_Z); + lcd_printPGM(_i("Pick print"));////MSG_PICK_Z c=0 r=0 lcd.setCursor(3, 2); @@ -3555,10 +3555,10 @@ void lcd_move_menu_axis() { START_MENU(); MENU_ITEM(back, MSG_SETTINGS, 0); - MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x); - MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y); - MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z); - MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e); + MENU_ITEM(submenu, _i("Move X"), lcd_move_x);////MSG_MOVE_X c=0 r=0 + MENU_ITEM(submenu, _i("Move Y"), lcd_move_y);////MSG_MOVE_Y c=0 r=0 + MENU_ITEM(submenu, _i("Move Z"), lcd_move_z);////MSG_MOVE_Z c=0 r=0 + MENU_ITEM(submenu, _i("Extruder"), lcd_move_e);////MSG_MOVE_E c=0 r=0 END_MENU(); } @@ -3611,7 +3611,7 @@ static void lcd_crash_mode_info() static uint32_t tim = 0; if ((tim + 1000) < millis()) { - fputs_P(MSG_CRASH_DET_ONLY_IN_NORMAL, lcdout); + fputs_P(_i("Crash detection canbe turned on only inNormal mode"), lcdout);////MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 tim = millis(); } if (lcd_clicked()) @@ -3624,7 +3624,7 @@ static void lcd_crash_mode_info2() static uint32_t tim = 0; if ((tim + 1000) < millis()) { - fputs_P(MSG_CRASH_DET_STEALTH_FORCE_OFF, lcdout); + fputs_P(_i("WARNING:Crash detectiondisabled inStealth mode"), lcdout);////MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 tim = millis(); } if (lcd_clicked()) @@ -3635,12 +3635,12 @@ static void lcd_crash_mode_info2() #ifdef PAT9125 static void lcd_filament_autoload_info() { - lcd_show_fullscreen_message_and_wait_P(MSG_AUTOLOADING_ONLY_IF_FSENS_ON); + lcd_show_fullscreen_message_and_wait_P(_i("Autoloading filament available only when filament sensor is turned on..."));////MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 } static void lcd_fsensor_fail() { - lcd_show_fullscreen_message_and_wait_P(MSG_FSENS_NOT_RESPONDING); + lcd_show_fullscreen_message_and_wait_P(_i("ERROR: Filament sensor is not responding, please check connection."));////MSG_FSENS_NOT_RESPONDING c=20 r=4 } #endif //PAT9125 @@ -3782,7 +3782,7 @@ void lcd_pinda_calibration_menu() { START_MENU(); MENU_ITEM(back, MSG_MENU_CALIBRATION, 0); - MENU_ITEM(submenu, MSG_CALIBRATE_PINDA, lcd_calibrate_pinda); + MENU_ITEM(submenu, _i("Calibrate"), lcd_calibrate_pinda);////MSG_CALIBRATE_PINDA c=17 r=1 END_MENU(); } @@ -3823,12 +3823,12 @@ void lcd_calibrate_pinda() { float e_steps_per_unit; float feedrate = (180 / axis_steps_per_unit[E_AXIS]) * 1; //3 //initial automatic extrusion feedrate (depends on current value of axis_steps_per_unit to avoid too fast extrusion) float e_shift_calibration = (axis_steps_per_unit[E_AXIS] > 180 ) ? ((180 / axis_steps_per_unit[E_AXIS]) * 70): 70; //length of initial automatic extrusion sequence - const char *msg_e_cal_knob = MSG_E_CAL_KNOB; + const char *msg_e_cal_knob = _i("Rotate knob until mark reaches extruder body. Click when done.");////MSG_E_CAL_KNOB c=20 r=8 const char *msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_e_cal_knob); const bool multi_screen = msg_next_e_cal_knob != NULL; unsigned long msg_millis; - lcd_show_fullscreen_message_and_wait_P(MSG_MARK_FIL); + lcd_show_fullscreen_message_and_wait_P(_i("Mark filament 100mm from extruder body. Click when done."));////MSG_MARK_FIL c=20 r=8 lcd_implementation_clear(); @@ -3878,7 +3878,7 @@ void lcd_calibrate_pinda() { //lcd_implementation_drawedit(PSTR("Result"), ftostr31(axis_steps_per_unit[E_AXIS])); //delay_keep_alive(2000); delay_keep_alive(500); - lcd_show_fullscreen_message_and_wait_P(MSG_CLEAN_NOZZLE_E); + lcd_show_fullscreen_message_and_wait_P(_i("E calibration finished. Please clean the nozzle. Click when done."));////MSG_CLEAN_NOZZLE_E c=20 r=8 lcd_update_enable(true); lcdDrawUpdate = 2; @@ -3912,12 +3912,12 @@ void lcd_toshiba_flash_air_compatibility_toggle() } void lcd_v2_calibration() { - bool loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_PLA_FILAMENT_LOADED, false, true); + bool loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is PLA filament loaded?"), false, true);////MSG_PLA_FILAMENT_LOADED c=20 r=2 if (loaded) { lcd_commands_type = LCD_COMMAND_V2_CAL; } else { - lcd_display_message_fullscreen_P(MSG_PLEASE_LOAD_PLA); + lcd_display_message_fullscreen_P(_i("Please load PLA filament first."));////MSG_PLEASE_LOAD_PLA c=20 r=4 for (int i = 0; i < 20; i++) { //wait max. 2s delay_keep_alive(100); if (lcd_clicked()) { @@ -3935,7 +3935,7 @@ void lcd_v2_calibration() { void lcd_wizard() { bool result = true; if (calibration_status() != CALIBRATION_STATUS_ASSEMBLED) { - result = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_RERUN, false, false); + result = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Running Wizard will delete current calibration results and start from the beginning. Continue?"), false, false);////MSG_WIZARD_RERUN c=20 r=7 } if (result) { calibration_status_store(CALIBRATION_STATUS_ASSEMBLED); @@ -3956,7 +3956,7 @@ void lcd_wizard(int state) { while (!end) { switch (state) { case 0: // run wizard? - wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_WELCOME, false, true); + wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"), false, true);////MSG_WIZARD_WELCOME c=20 r=7 if (wizard_event) { state = 1; eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); @@ -3977,7 +3977,7 @@ void lcd_wizard(int state) { } break; case 2: //selftest - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_SELFTEST); + lcd_show_fullscreen_message_and_wait_P(_i("First, I will run the selftest to check most common assembly problems."));////MSG_WIZARD_SELFTEST c=20 r=8 wizard_event = lcd_selftest(); if (wizard_event) { calibration_status_store(CALIBRATION_STATUS_XYZ_CALIBRATION); @@ -3986,13 +3986,13 @@ void lcd_wizard(int state) { else end = true; break; case 3: //xyz cal. - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_XYZ_CAL); + lcd_show_fullscreen_message_and_wait_P(_i("I will run xyz calibration now. It will take approx. 12 mins."));////MSG_WIZARD_XYZ_CAL c=20 r=8 wizard_event = gcode_M45(false, 0); if (wizard_event) state = 5; else end = true; break; case 4: //z cal. - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_Z_CAL); + lcd_show_fullscreen_message_and_wait_P(_i("I will run z calibration now."));////MSG_WIZARD_Z_CAL c=20 r=8 wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); if (!wizard_event) lcd_show_fullscreen_message_and_wait_P(MSG_PLACE_STEEL_SHEET); wizard_event = gcode_M45(true, 0); @@ -4003,14 +4003,14 @@ void lcd_wizard(int state) { //start to preheat nozzle and bed to save some time later setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0); setTargetBed(PLA_PREHEAT_HPB_TEMP); - wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_WIZARD_FILAMENT_LOADED, false); + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), false);////MSG_WIZARD_FILAMENT_LOADED c=20 r=2 if (wizard_event) state = 8; else state = 6; break; case 6: //waiting for preheat nozzle for PLA; #ifndef SNMM - lcd_display_message_fullscreen_P(MSG_WIZARD_WILL_PREHEAT); + lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA."));////MSG_WIZARD_WILL_PREHEAT c=20 r=4 current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder); delay_keep_alive(2000); @@ -4034,7 +4034,7 @@ void lcd_wizard(int state) { #ifdef PAT9125 fsensor_block(); #endif //PAT9125 - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_LOAD_FILAMENT); + lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8 lcd_update_enable(false); lcd_implementation_clear(); lcd_print_at_PGM(0, 2, MSG_LOADING_FILAMENT); @@ -4048,20 +4048,20 @@ void lcd_wizard(int state) { state = 9; break; case 8: - wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_WIZARD_PLA_FILAMENT, false, true); + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is it PLA filament?"), false, true);////MSG_WIZARD_PLA_FILAMENT c=20 r=2 if (wizard_event) state = 9; else end = true; break; case 9: - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_V2_CAL); - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_V2_CAL_2); + lcd_show_fullscreen_message_and_wait_P(_i("Now I will calibrate distance between tip of the nozzle and heatbed surface."));////MSG_WIZARD_V2_CAL c=20 r=8 + lcd_show_fullscreen_message_and_wait_P(_i("I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."));////MSG_WIZARD_V2_CAL_2 c=20 r=12 lcd_commands_type = LCD_COMMAND_V2_CAL; end = true; break; case 10: //repeat first layer cal.? - wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_REPEAT_V2_CAL, false); + wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Do you want to repeat last step to readjust distance between nozzle and heatbed?"), false);////MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 if (wizard_event) { - lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_CLEAN_HEATBED); + lcd_show_fullscreen_message_and_wait_P(_i("Please clean heatbed and then press the knob."));////MSG_WIZARD_CLEAN_HEATBED c=20 r=8 state = 9; } else { @@ -4097,7 +4097,7 @@ void lcd_wizard(int state) { msg = MSG_WIZARD_CALIBRATION_FAILED; break; case 8: - msg = MSG_WIZARD_INSERT_CORRECT_FILAMENT; + msg = _i("Please load PLA filament and then resume Wizard by rebooting the printer.");////MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 break; case 9: break; //exit wizard for v2 calibration, which is implemted in lcd_commands (we need lcd_update running) case 11: //we are finished @@ -4127,14 +4127,14 @@ static void lcd_settings_menu() MENU_ITEM(back, MSG_MAIN, lcd_settings_menu_back); - MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); + MENU_ITEM(submenu, _i("Temperature"), lcd_control_temperature_menu);////MSG_TEMPERATURE c=0 r=0 if (!homing_flag) { - MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu_1mm); + MENU_ITEM(submenu, _i("Move axis"), lcd_move_menu_1mm);////MSG_MOVE_AXIS c=0 r=0 } if (!isPrintPaused) { - MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); + MENU_ITEM(gcode, _i("Disable steppers"), PSTR("M84"));////MSG_DISABLE_STEPPERS c=0 r=0 } #ifndef TMC2130 if (!farm_mode) { //dont show in menu if we are in farm mode @@ -4152,7 +4152,7 @@ static void lcd_settings_menu() if (FSensorStateMenu == 0) { if (fsensor_not_responding){ // Filament sensor not working - MENU_ITEM(function, MSG_FSENSOR_NA, lcd_fsensor_state_set); + MENU_ITEM(function, _i("Fil. sensor [N/A]"), lcd_fsensor_state_set);////MSG_FSENSOR_NA c=0 r=0 MENU_ITEM(function, MSG_FSENS_AUTOLOAD_NA, lcd_fsensor_fail); } else{ @@ -4165,10 +4165,10 @@ static void lcd_settings_menu() MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set); if ((filament_autoload_enabled == true)) { - MENU_ITEM(function, MSG_FSENS_AUTOLOAD_ON, lcd_set_filament_autoload); + MENU_ITEM(function, _i("F. autoload [on]"), lcd_set_filament_autoload);////MSG_FSENS_AUTOLOAD_ON c=17 r=1 } else { - MENU_ITEM(function, MSG_FSENS_AUTOLOAD_OFF, lcd_set_filament_autoload); + MENU_ITEM(function, _i("F. autoload [off]"), lcd_set_filament_autoload);////MSG_FSENS_AUTOLOAD_OFF c=17 r=1 } } @@ -4176,10 +4176,10 @@ static void lcd_settings_menu() #endif //PAT9125 if (fans_check_enabled == true) { - MENU_ITEM(function, MSG_FANS_CHECK_ON, lcd_set_fan_check); + MENU_ITEM(function, _i("Fans check [on]"), lcd_set_fan_check);////MSG_FANS_CHECK_ON c=17 r=1 } else { - MENU_ITEM(function, MSG_FANS_CHECK_OFF, lcd_set_fan_check); + MENU_ITEM(function, _i("Fans check [off]"), lcd_set_fan_check);////MSG_FANS_CHECK_OFF c=17 r=1 } #ifdef TMC2130 @@ -4195,21 +4195,21 @@ static void lcd_settings_menu() } else MENU_ITEM(submenu, MSG_CRASHDETECT_NA, lcd_crash_mode_info); } - MENU_ITEM_EDIT(wfac, MSG_EXTRUDER_CORRECTION, &tmc2130_wave_fac[E_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX); + MENU_ITEM_EDIT(wfac, _i("E-correct"), &tmc2130_wave_fac[E_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 #endif //TMC2130 if (temp_cal_active == false) { - MENU_ITEM(function, MSG_TEMP_CALIBRATION_OFF, lcd_temp_calibration_set); + MENU_ITEM(function, _i("Temp. cal. [off]"), lcd_temp_calibration_set);////MSG_TEMP_CALIBRATION_OFF c=20 r=1 } else { - MENU_ITEM(function, MSG_TEMP_CALIBRATION_ON, lcd_temp_calibration_set); + MENU_ITEM(function, _i("Temp. cal. [on]"), lcd_temp_calibration_set);////MSG_TEMP_CALIBRATION_ON c=20 r=1 } #ifdef HAS_SECOND_SERIAL_PORT if (selectedSerialPort == 0) { - MENU_ITEM(function, MSG_SECOND_SERIAL_OFF, lcd_second_serial_set); + MENU_ITEM(function, _i("RPi port [off]"), lcd_second_serial_set);////MSG_SECOND_SERIAL_OFF c=17 r=1 } else { - MENU_ITEM(function, MSG_SECOND_SERIAL_ON, lcd_second_serial_set); + MENU_ITEM(function, _i("RPi port [on]"), lcd_second_serial_set);////MSG_SECOND_SERIAL_ON c=17 r=1 } #endif //HAS_SECOND_SERIAL @@ -4217,12 +4217,12 @@ static void lcd_settings_menu() { MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z); } - MENU_ITEM(submenu, MSG_LANGUAGE_SELECT, lcd_language_menu); + MENU_ITEM(submenu, _i("Select language"), lcd_language_menu);////MSG_LANGUAGE_SELECT c=0 r=0 if (card.ToshibaFlashAir_isEnabled()) { - MENU_ITEM(function, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON, lcd_toshiba_flash_air_compatibility_toggle); + MENU_ITEM(function, _i("SD card [FlshAir]"), lcd_toshiba_flash_air_compatibility_toggle);////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 } else { - MENU_ITEM(function, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF, lcd_toshiba_flash_air_compatibility_toggle); + MENU_ITEM(function, _i("SD card [normal]"), lcd_toshiba_flash_air_compatibility_toggle);////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 } #ifdef SDCARD_SORT_ALPHA @@ -4230,9 +4230,9 @@ static void lcd_settings_menu() uint8_t sdSort; EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); switch (sdSort) { - case SD_SORT_TIME: MENU_ITEM(function, MSG_SORT_TIME, lcd_sort_type_set); break; - case SD_SORT_ALPHA: MENU_ITEM(function, MSG_SORT_ALPHA, lcd_sort_type_set); break; - default: MENU_ITEM(function, MSG_SORT_NONE, lcd_sort_type_set); + case SD_SORT_TIME: MENU_ITEM(function, _i("Sort: [Time]"), lcd_sort_type_set); break;////MSG_SORT_TIME c=17 r=1 + case SD_SORT_ALPHA: MENU_ITEM(function, _i("Sort: [Alphabet]"), lcd_sort_type_set); break;////MSG_SORT_ALPHA c=17 r=1 + default: MENU_ITEM(function, _i("Sort: [None]"), lcd_sort_type_set);////MSG_SORT_NONE c=17 r=1 } } #endif // SDCARD_SORT_ALPHA @@ -4488,37 +4488,37 @@ static void lcd_calibration_menu() MENU_ITEM(back, MSG_MAIN, 0); if (!isPrintPaused) { - MENU_ITEM(function, MSG_WIZARD, lcd_wizard); - MENU_ITEM(submenu, MSG_V2_CALIBRATION, lcd_v2_calibration); + MENU_ITEM(function, _i("Wizard"), lcd_wizard);////MSG_WIZARD c=17 r=1 + MENU_ITEM(submenu, _i("First layer cal."), lcd_v2_calibration);////MSG_V2_CALIBRATION c=17 r=1 MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 W")); - MENU_ITEM(function, MSG_SELFTEST, lcd_selftest_v); + MENU_ITEM(function, _i("Selftest "), lcd_selftest_v);////MSG_SELFTEST c=0 r=0 #ifdef MK1BP // MK1 // "Calibrate Z" MENU_ITEM(gcode, MSG_HOMEYZ, PSTR("G28 Z")); #else //MK1BP // MK2 - MENU_ITEM(function, MSG_CALIBRATE_BED, lcd_mesh_calibration); + MENU_ITEM(function, _i("Calibrate XYZ"), lcd_mesh_calibration);////MSG_CALIBRATE_BED c=0 r=0 // "Calibrate Z" with storing the reference values to EEPROM. MENU_ITEM(submenu, MSG_HOMEYZ, lcd_mesh_calibration_z); #ifndef SNMM - //MENU_ITEM(function, MSG_CALIBRATE_E, lcd_calibrate_extruder); + //MENU_ITEM(function, _i("Calibrate E"), lcd_calibrate_extruder);////MSG_CALIBRATE_E c=20 r=1 #endif // "Mesh Bed Leveling" - MENU_ITEM(submenu, MSG_MESH_BED_LEVELING, lcd_mesh_bedleveling); + MENU_ITEM(submenu, _i("Mesh Bed Leveling"), lcd_mesh_bedleveling);////MSG_MESH_BED_LEVELING c=0 r=0 #endif //MK1BP - MENU_ITEM(submenu, MSG_BED_CORRECTION_MENU, lcd_adjust_bed); - MENU_ITEM(submenu, MSG_PID_EXTRUDER, pid_extruder); - MENU_ITEM(submenu, MSG_SHOW_END_STOPS, menu_show_end_stops); + MENU_ITEM(submenu, _i("Bed level correct"), lcd_adjust_bed);////MSG_BED_CORRECTION_MENU c=0 r=0 + MENU_ITEM(submenu, _i("PID calibration"), pid_extruder);////MSG_PID_EXTRUDER c=17 r=1 + MENU_ITEM(submenu, _i("Show end stops"), menu_show_end_stops);////MSG_SHOW_END_STOPS c=17 r=1 #ifndef MK1BP - MENU_ITEM(gcode, MSG_CALIBRATE_BED_RESET, PSTR("M44")); + MENU_ITEM(gcode, _i("Reset XYZ calibr."), PSTR("M44"));////MSG_CALIBRATE_BED_RESET c=0 r=0 #endif //MK1BP #ifndef SNMM //MENU_ITEM(function, MSG_RESET_CALIBRATE_E, lcd_extr_cal_reset); #endif #ifndef MK1BP - MENU_ITEM(submenu, MSG_CALIBRATION_PINDA_MENU, lcd_pinda_calibration_menu); + MENU_ITEM(submenu, _i("Temp. calibration"), lcd_pinda_calibration_menu);////MSG_CALIBRATION_PINDA_MENU c=17 r=1 #endif //MK1BP } @@ -4827,8 +4827,8 @@ static char snmm_stop_print_menu() { //menu for choosing which filaments will be lcd_print_at_PGM(0,0,MSG_UNLOAD_FILAMENT); lcd.print(":"); lcd.setCursor(0, 1); lcd.print(">"); lcd_print_at_PGM(1,1,MSG_ALL); - lcd_print_at_PGM(1,2,MSG_USED); - lcd_print_at_PGM(1,3,MSG_CURRENT); + lcd_print_at_PGM(1,2,_i("Used during print"));////MSG_USED c=19 r=1 + lcd_print_at_PGM(1,3,_i("Current"));////MSG_CURRENT c=19 r=1 char cursor_pos = 1; int enc_dif = 0; KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -5361,11 +5361,11 @@ static void fil_load_menu() { START_MENU(); MENU_ITEM(back, MSG_MAIN, 0); - MENU_ITEM(function, MSG_LOAD_ALL, load_all); - MENU_ITEM(function, MSG_LOAD_FILAMENT_1, extr_adj_0); - MENU_ITEM(function, MSG_LOAD_FILAMENT_2, extr_adj_1); - MENU_ITEM(function, MSG_LOAD_FILAMENT_3, extr_adj_2); - MENU_ITEM(function, MSG_LOAD_FILAMENT_4, extr_adj_3); + MENU_ITEM(function, _i("Load all"), load_all);////MSG_LOAD_ALL c=0 r=0 + MENU_ITEM(function, _i("Load filament 1"), extr_adj_0);////MSG_LOAD_FILAMENT_1 c=17 r=0 + MENU_ITEM(function, _i("Load filament 2"), extr_adj_1);////MSG_LOAD_FILAMENT_2 c=17 r=0 + MENU_ITEM(function, _i("Load filament 3"), extr_adj_2);////MSG_LOAD_FILAMENT_3 c=17 r=0 + MENU_ITEM(function, _i("Load filament 4"), extr_adj_3);////MSG_LOAD_FILAMENT_4 c=17 r=0 END_MENU(); } @@ -5374,11 +5374,11 @@ static void fil_unload_menu() { START_MENU(); MENU_ITEM(back, MSG_MAIN, 0); - MENU_ITEM(function, MSG_UNLOAD_ALL, extr_unload_all); - MENU_ITEM(function, MSG_UNLOAD_FILAMENT_1, extr_unload_0); - MENU_ITEM(function, MSG_UNLOAD_FILAMENT_2, extr_unload_1); - MENU_ITEM(function, MSG_UNLOAD_FILAMENT_3, extr_unload_2); - MENU_ITEM(function, MSG_UNLOAD_FILAMENT_4, extr_unload_3); + MENU_ITEM(function, _i("Unload all"), extr_unload_all);////MSG_UNLOAD_ALL c=0 r=0 + MENU_ITEM(function, _i("Unload filament 1"), extr_unload_0);////MSG_UNLOAD_FILAMENT_1 c=17 r=0 + MENU_ITEM(function, _i("Unload filament 2"), extr_unload_1);////MSG_UNLOAD_FILAMENT_2 c=17 r=0 + MENU_ITEM(function, _i("Unload filament 3"), extr_unload_2);////MSG_UNLOAD_FILAMENT_3 c=17 r=0 + MENU_ITEM(function, _i("Unload filament 4"), extr_unload_3);////MSG_UNLOAD_FILAMENT_4 c=17 r=0 END_MENU(); } @@ -5386,10 +5386,10 @@ static void fil_unload_menu() static void change_extr_menu(){ START_MENU(); MENU_ITEM(back, MSG_MAIN, 0); - MENU_ITEM(function, MSG_EXTRUDER_1, extr_change_0); - MENU_ITEM(function, MSG_EXTRUDER_2, extr_change_1); - MENU_ITEM(function, MSG_EXTRUDER_3, extr_change_2); - MENU_ITEM(function, MSG_EXTRUDER_4, extr_change_3); + MENU_ITEM(function, _i("Extruder 1"), extr_change_0);////MSG_EXTRUDER_1 c=17 r=1 + MENU_ITEM(function, _i("Extruder 2"), extr_change_1);////MSG_EXTRUDER_2 c=17 r=1 + MENU_ITEM(function, _i("Extruder 3"), extr_change_2);////MSG_EXTRUDER_3 c=17 r=1 + MENU_ITEM(function, _i("Extruder 4"), extr_change_3);////MSG_EXTRUDER_4 c=17 r=1 END_MENU(); } @@ -5707,10 +5707,10 @@ static void lcd_main_menu() if ( moves_planned() || IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL)) { - MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); + MENU_ITEM(submenu, _i("Tune"), lcd_tune_menu);////MSG_TUNE c=0 r=0 } else { - MENU_ITEM(submenu, MSG_PREHEAT, lcd_preheat_menu); + MENU_ITEM(submenu, _i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT c=0 r=0 } #ifdef SDSUPPORT @@ -5721,11 +5721,11 @@ static void lcd_main_menu() if (mesh_bed_leveling_flag == false && homing_flag == false) { if (card.sdprinting) { - MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause); + MENU_ITEM(function, _i("Pause print"), lcd_sdcard_pause);////MSG_PAUSE_PRINT c=0 r=0 } else { - MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume); + MENU_ITEM(function, _i("Resume print"), lcd_sdcard_resume);////MSG_RESUME_PRINT c=0 r=0 } MENU_ITEM(submenu, MSG_STOP_PRINT, lcd_sdcard_stop); } @@ -5741,15 +5741,15 @@ static void lcd_main_menu() /*else*/ MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu); } #if SDCARDDETECT < 1 - MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21")); // SD-card changed by user + MENU_ITEM(gcode, _i("Change SD card"), PSTR("M21")); // SD-card changed by user////MSG_CNG_SDCARD c=0 r=0 #endif } } else { - MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu); + MENU_ITEM(submenu, _i("No SD card"), lcd_sdcard_menu);////MSG_NO_CARD c=0 r=0 #if SDCARDDETECT < 1 - MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface + MENU_ITEM(gcode, _i("Init. SD card"), PSTR("M21")); // Manually initialize the SD-card via user interface////MSG_INIT_SDCARD c=0 r=0 #endif } #endif @@ -5767,7 +5767,7 @@ static void lcd_main_menu() #ifndef SNMM #ifdef PAT9125 if ( ((filament_autoload_enabled == true) && (fsensor_enabled == true))) - MENU_ITEM(submenu, MSG_AUTOLOAD_FILAMENT, lcd_menu_AutoLoadFilament); + MENU_ITEM(submenu, _i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=17 r=0 else #endif //PAT9125 MENU_ITEM(function, MSG_LOAD_FILAMENT, lcd_LoadFilament); @@ -5776,7 +5776,7 @@ static void lcd_main_menu() #ifdef SNMM MENU_ITEM(submenu, MSG_LOAD_FILAMENT, fil_load_menu); MENU_ITEM(submenu, MSG_UNLOAD_FILAMENT, fil_unload_menu); - MENU_ITEM(submenu, MSG_CHANGE_EXTR, change_extr_menu); + MENU_ITEM(submenu, _i("Change extruder"), change_extr_menu);////MSG_CHANGE_EXTR c=20 r=1 #endif MENU_ITEM(submenu, MSG_SETTINGS, lcd_settings_menu); if(!isPrintPaused) MENU_ITEM(submenu, MSG_MENU_CALIBRATION, lcd_calibration_menu); @@ -5788,14 +5788,14 @@ static void lcd_main_menu() if (!is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL)) { - MENU_ITEM(submenu, MSG_STATISTICS, lcd_menu_statistics); + MENU_ITEM(submenu, _i("Statistics "), lcd_menu_statistics);////MSG_STATISTICS c=0 r=0 } #if defined(TMC2130) || defined(PAT9125) MENU_ITEM(submenu, PSTR("Fail stats"), lcd_menu_fails_stats); #endif - MENU_ITEM(submenu, MSG_SUPPORT, lcd_support_menu); + MENU_ITEM(submenu, _i("Support"), lcd_support_menu);////MSG_SUPPORT c=0 r=0 END_MENU(); @@ -5806,7 +5806,7 @@ void stack_error() { WRITE(BEEPER, HIGH); delay(1000); WRITE(BEEPER, LOW); - lcd_display_message_fullscreen_P(MSG_STACK_ERROR); + lcd_display_message_fullscreen_P(_i("Error - static memory has been overwritten"));////MSG_STACK_ERROR c=20 r=4 //err_triggered = 1; while (1) delay_keep_alive(1000); } @@ -5889,13 +5889,13 @@ static void lcd_tune_menu() START_MENU(); MENU_ITEM(back, MSG_MAIN, 0); //1 - MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999);//2 + MENU_ITEM_EDIT(int3, _i("Speed"), &feedmultiply, 10, 999);//2////MSG_SPEED c=0 r=0 MENU_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 10);//3 MENU_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 10);//4 MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);//5 - MENU_ITEM_EDIT(int3, MSG_FLOW, &extrudemultiply, 10, 999);//6 + MENU_ITEM_EDIT(int3, _i("Flow"), &extrudemultiply, 10, 999);//6////MSG_FLOW c=0 r=0 #ifdef FILAMENTCHANGEENABLE MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 #endif @@ -5958,10 +5958,10 @@ static void lcd_control_temperature_menu() MENU_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); #endif #if TEMP_SENSOR_1 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE1, &target_temperature[1], 0, HEATER_1_MAXTEMP - 10); + MENU_ITEM_EDIT(int3, _i("Nozzle2"), &target_temperature[1], 0, HEATER_1_MAXTEMP - 10);////MSG_NOZZLE1 c=0 r=0 #endif #if TEMP_SENSOR_2 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE2, &target_temperature[2], 0, HEATER_2_MAXTEMP - 10); + MENU_ITEM_EDIT(int3, _i("Nozzle3"), &target_temperature[2], 0, HEATER_2_MAXTEMP - 10);////MSG_NOZZLE2 c=0 r=0 #endif #if TEMP_SENSOR_BED != 0 MENU_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 3); @@ -5969,9 +5969,9 @@ static void lcd_control_temperature_menu() MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); #if defined AUTOTEMP && (TEMP_SENSOR_0 != 0) MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled); - MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 10); - MENU_ITEM_EDIT(float3, MSG_MAX, &autotemp_max, 0, HEATER_0_MAXTEMP - 10); - MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0); + MENU_ITEM_EDIT(float3, _i(" MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 10);02 Min"), &autotemp_min, 0, HEATER_0_MAXTEMP - 10);////MSG_MIN c=0 r=0 + MENU_ITEM_EDIT(float3, _i(" MENU_ITEM_EDIT(float3, MSG_MAX, &autotemp_max, 0, HEATER_0_MAXTEMP - 10);02 Max"), &autotemp_max, 0, HEATER_0_MAXTEMP - 10);////MSG_MAX c=0 r=0 + MENU_ITEM_EDIT(float32, _i(" MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0);02 Fact"), &autotemp_factor, 0.0, 1.0);////MSG_FACTOR c=0 r=0 #endif END_MENU(); @@ -6275,7 +6275,7 @@ char *wfac_to_str5(const uint8_t &x) conv[0] = '['; ftostr43(((float)((uint16_t)x + 1000) / 1000), 1); } - else strcpy_P(conv, MSG_EXTRUDER_CORRECTION_OFF); + else strcpy_P(conv, _i(" [off"));////MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 conv[6] = ']'; conv[7] = ' '; conv[8] = 0; @@ -6305,7 +6305,7 @@ bool lcd_selftest() bool _result = true; lcd_wait_for_cool_down(); lcd_implementation_clear(); - lcd.setCursor(0, 0); lcd_printPGM(MSG_SELFTEST_START); + lcd.setCursor(0, 0); lcd_printPGM(_i("Self test start "));////MSG_SELFTEST_START c=20 r=0 #ifdef TMC2130 FORCE_HIGH_POWER_START; #endif // TMC2130 @@ -6468,7 +6468,7 @@ bool lcd_selftest() if (_result) { - LCD_ALERTMESSAGERPGM(MSG_SELFTEST_OK); + LCD_ALERTMESSAGERPGM(_i("Self test OK"));////MSG_SELFTEST_OK c=0 r=0 } else { @@ -6900,27 +6900,27 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_SELFTEST_ERROR); + lcd_printPGM(_i("Selftest error !"));////MSG_SELFTEST_ERROR c=0 r=0 lcd.setCursor(0, 1); - lcd_printPGM(MSG_SELFTEST_PLEASECHECK); + lcd_printPGM(_i("Please check :"));////MSG_SELFTEST_PLEASECHECK c=0 r=0 switch (_error_no) { case 1: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_HEATERTHERMISTOR); + lcd_printPGM(_i("Heater/Thermistor"));////MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_NOTCONNECTED); + lcd_printPGM(_i("Not connected"));////MSG_SELFTEST_NOTCONNECTED c=0 r=0 break; case 2: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_BEDHEATER); + lcd_printPGM(_i("Bed / Heater"));////MSG_SELFTEST_BEDHEATER c=0 r=0 lcd.setCursor(0, 3); lcd_printPGM(MSG_SELFTEST_WIRINGERROR); break; case 3: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_ENDSTOPS); + lcd_printPGM(_i("Endstops"));////MSG_SELFTEST_ENDSTOPS c=0 r=0 lcd.setCursor(0, 3); lcd_printPGM(MSG_SELFTEST_WIRINGERROR); lcd.setCursor(17, 3); @@ -6932,13 +6932,13 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * lcd.setCursor(18, 2); lcd.print(_error_1); lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_ENDSTOP); + lcd_printPGM(_i("Endstop"));////MSG_SELFTEST_ENDSTOP c=0 r=0 lcd.setCursor(18, 3); lcd.print(_error_2); break; case 5: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_ENDSTOP_NOTHIT); + lcd_printPGM(_i("Endstop not hit"));////MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 lcd.setCursor(0, 3); lcd_printPGM(MSG_SELFTEST_MOTOR); lcd.setCursor(18, 3); @@ -6962,7 +6962,7 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * break; case 8: lcd.setCursor(0, 2); - lcd_printPGM(MSG_LOOSE_PULLEY); + lcd_printPGM(_i("Loose pulley"));////MSG_LOOSE_PULLEY c=20 r=1 lcd.setCursor(0, 3); lcd_printPGM(MSG_SELFTEST_MOTOR); lcd.setCursor(18, 3); @@ -6970,23 +6970,23 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * break; case 9: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_AXIS_LENGTH); + lcd_printPGM(_i("Axis length"));////MSG_SELFTEST_AXIS_LENGTH c=0 r=0 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_AXIS); + lcd_printPGM(_i("Axis"));////MSG_SELFTEST_AXIS c=0 r=0 lcd.setCursor(18, 3); lcd.print(_error_1); break; case 10: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_FANS); + lcd_printPGM(_i("Front/left fans"));////MSG_SELFTEST_FANS c=0 r=0 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_SWAPPED); + lcd_printPGM(_i("Swapped"));////MSG_SELFTEST_SWAPPED c=0 r=0 lcd.setCursor(18, 3); lcd.print(_error_1); break; case 11: lcd.setCursor(0, 2); - lcd_printPGM(MSG_FILAMENT_SENSOR); + lcd_printPGM(_i("Filament sensor"));////MSG_FILAMENT_SENSOR c=20 r=0 lcd.setCursor(0, 3); lcd_printPGM(MSG_SELFTEST_WIRINGERROR); break; @@ -7189,16 +7189,16 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo if (_step == -1) lcd_printPGM(MSG_SELFTEST_FAN); if (_step == 0) lcd_printPGM(MSG_SELFTEST_FAN); if (_step == 1) lcd_printPGM(MSG_SELFTEST_FAN); - if (_step == 2) lcd_printPGM(MSG_SELFTEST_CHECK_ENDSTOPS); - if (_step == 3) lcd_printPGM(MSG_SELFTEST_CHECK_HOTEND); - if (_step == 4) lcd_printPGM(MSG_SELFTEST_CHECK_X); - if (_step == 5) lcd_printPGM(MSG_SELFTEST_CHECK_Y); - if (_step == 6) lcd_printPGM(MSG_SELFTEST_CHECK_Z); + if (_step == 2) lcd_printPGM(_i("Checking endstops"));////MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 + if (_step == 3) lcd_printPGM(_i("Checking hotend "));////MSG_SELFTEST_CHECK_HOTEND c=20 r=0 + if (_step == 4) lcd_printPGM(_i("Checking X axis "));////MSG_SELFTEST_CHECK_X c=20 r=0 + if (_step == 5) lcd_printPGM(_i("Checking Y axis "));////MSG_SELFTEST_CHECK_Y c=20 r=0 + if (_step == 6) lcd_printPGM(_i("Checking Z axis "));////MSG_SELFTEST_CHECK_Z c=20 r=0 if (_step == 7) lcd_printPGM(MSG_SELFTEST_CHECK_BED); if (_step == 8) lcd_printPGM(MSG_SELFTEST_CHECK_BED); if (_step == 9) lcd_printPGM(MSG_SELFTEST_CHECK_FSENSOR); if (_step == 10) lcd_printPGM(MSG_SELFTEST_CHECK_FSENSOR); - if (_step == 11) lcd_printPGM(MSG_SELFTEST_CHECK_ALLCORRECT); + if (_step == 11) lcd_printPGM(_i("All correct "));////MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 if (_step == 12) lcd_printPGM(MSG_SELFTEST_FAILED); if (_step == 13) lcd_printPGM(PSTR("Calibrating home")); @@ -7207,16 +7207,16 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo if ((_step >= -1) && (_step <= 1)) { //SERIAL_ECHOLNPGM("Fan test"); - lcd_print_at_PGM(0, 2, MSG_SELFTEST_EXTRUDER_FAN_SPEED); + lcd_print_at_PGM(0, 2, _i("Extruder fan:"));////MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 lcd.setCursor(18, 2); (_step < 0) ? lcd.print(_indicator) : lcd.print("OK"); - lcd_print_at_PGM(0, 3, MSG_SELFTEST_PRINT_FAN_SPEED); + lcd_print_at_PGM(0, 3, _i("Print fan:"));////MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 lcd.setCursor(18, 3); (_step < 1) ? lcd.print(_indicator) : lcd.print("OK"); } else if (_step >= 9 && _step <= 10) { - lcd_print_at_PGM(0, 2, MSG_SELFTEST_FILAMENT_SENSOR); + lcd_print_at_PGM(0, 2, _i("Filament sensor:"));////MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 lcd.setCursor(18, 2); (_step == 9) ? lcd.print(_indicator) : lcd.print("OK"); } @@ -7359,7 +7359,7 @@ static void menu_action_sdfile(const char* filename, char* longFilename) } if (!check_file(filename)) { - result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILE_INCOMPLETE, false, false); + result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false, false);////MSG_FILE_INCOMPLETE c=20 r=2 lcd_update_enable(true); } if (result) { @@ -7513,13 +7513,13 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) if (lcd_oldcardstatus) { card.initsd(); - LCD_MESSAGERPGM(MSG_SD_INSERTED); + LCD_MESSAGERPGM(_i("Card inserted"));////MSG_SD_INSERTED c=0 r=0 //get_description(); } else { card.release(); - LCD_MESSAGERPGM(MSG_SD_REMOVED); + LCD_MESSAGERPGM(_i("Card removed"));////MSG_SD_REMOVED c=0 r=0 } } #endif//CARDINSERTED diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index cfffeb36..42d96c02 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -968,7 +968,7 @@ if (print_sd_status) lcd.setCursor(0, 3); lcd_printPGM(PSTR(" ")); lcd.setCursor(0, 3); - lcd_printPGM(MSG_HOMEYZ_PROGRESS); + lcd_printPGM(_i("Calibrating Z"));////MSG_HOMEYZ_PROGRESS c=0 r=0 lcd_printPGM(PSTR(" : ")); lcd.print(custom_message_state-10); } @@ -986,7 +986,7 @@ if (print_sd_status) lcd.setCursor(0, 3); lcd_printPGM(PSTR(" ")); lcd.setCursor(0, 3); - lcd_printPGM(MSG_HOMEYZ_DONE); + lcd_printPGM(_i("Calibration done"));////MSG_HOMEYZ_DONE c=0 r=0 custom_message_state--; } } @@ -1020,7 +1020,7 @@ if (print_sd_status) // temp compensation preheat if (custom_message_type == 5) { lcd.setCursor(0, 3); - lcd_printPGM(MSG_PINDA_PREHEAT); + lcd_printPGM(_i("PINDA Heating"));////MSG_PINDA_PREHEAT c=20 r=1 if (custom_message_state <= PINDA_HEAT_T) { lcd_printPGM(PSTR(": ")); lcd.print(custom_message_state); //seconds diff --git a/Firmware/util.cpp b/Firmware/util.cpp index ce0421a5..3258a0c0 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -289,11 +289,11 @@ bool show_upgrade_dialog_if_version_newer(const char *version_string) } if (upgrade) { - lcd_display_message_fullscreen_P(MSG_NEW_FIRMWARE_AVAILABLE); + lcd_display_message_fullscreen_P(_i("New firmware version available:"));////MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 lcd_print_at_PGM(0, 2, PSTR("")); for (const char *c = version_string; ! is_whitespace_or_nl_or_eol(*c); ++ c) lcd_implementation_write(*c); - lcd_print_at_PGM(0, 3, MSG_NEW_FIRMWARE_PLEASE_UPGRADE); + lcd_print_at_PGM(0, 3, _i("Please upgrade."));////MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 tone(BEEPER, 1000); delay_keep_alive(50); noTone(BEEPER); diff --git a/Firmware/langtool.php b/lang_backup/langtool.php similarity index 100% rename from Firmware/langtool.php rename to lang_backup/langtool.php diff --git a/Firmware/langtool.pl b/lang_backup/langtool.pl old mode 100755 new mode 100644 similarity index 100% rename from Firmware/langtool.pl rename to lang_backup/langtool.pl diff --git a/lang_backup/language.h b/lang_backup/language.h new file mode 100644 index 00000000..366397c6 --- /dev/null +++ b/lang_backup/language.h @@ -0,0 +1,34 @@ +#ifndef LANGUAGE_H +#define LANGUAGE_H + +#define PROTOCOL_VERSION "1.0" + +#ifdef CUSTOM_MENDEL_NAME + // #define CUSTOM_MENDEL_NAME CUSTOM_MENDEL_NAME +#else + #define MACHINE_NAME "Mendel" +#endif + +#define _i PSTR +#define _n PSTR + +#ifndef MACHINE_UUID + #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" +#endif + +#define MSG_FW_VERSION "Firmware" + +#define STRINGIFY_(n) #n +#define STRINGIFY(n) STRINGIFY_(n) + + +// Common serial messages +#define MSG_MARLIN "Marlin" + +// Serial Console Messages (do not translate those!) + + +// LCD Menu Messages +#include "language_all.h" + +#endif //__LANGUAGE_H diff --git a/Firmware/language_all.cpp b/lang_backup/language_all.cpp similarity index 100% rename from Firmware/language_all.cpp rename to lang_backup/language_all.cpp diff --git a/Firmware/language_all.h b/lang_backup/language_all.h similarity index 100% rename from Firmware/language_all.h rename to lang_backup/language_all.h diff --git a/Firmware/language_common.h b/lang_backup/language_common.h similarity index 100% rename from Firmware/language_common.h rename to lang_backup/language_common.h diff --git a/Firmware/language_cz.h b/lang_backup/language_cz.h similarity index 100% rename from Firmware/language_cz.h rename to lang_backup/language_cz.h diff --git a/Firmware/language_de.h b/lang_backup/language_de.h similarity index 100% rename from Firmware/language_de.h rename to lang_backup/language_de.h diff --git a/Firmware/language_en.h b/lang_backup/language_en.h similarity index 100% rename from Firmware/language_en.h rename to lang_backup/language_en.h diff --git a/Firmware/language_es.h b/lang_backup/language_es.h similarity index 100% rename from Firmware/language_es.h rename to lang_backup/language_es.h diff --git a/Firmware/language_it.h b/lang_backup/language_it.h similarity index 100% rename from Firmware/language_it.h rename to lang_backup/language_it.h diff --git a/Firmware/language_pl.h b/lang_backup/language_pl.h similarity index 100% rename from Firmware/language_pl.h rename to lang_backup/language_pl.h From 4f5cbd3cb64b743c2674a80db1dd5dc14e2eb088 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 03:33:29 +0200 Subject: [PATCH 25/68] New ML support - progmem.sh + readme.txt --- lang/progmem.sh | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ lang/readme.txt | 48 ++++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 lang/progmem.sh create mode 100644 lang/readme.txt diff --git a/lang/progmem.sh b/lang/progmem.sh new file mode 100644 index 00000000..cee3af61 --- /dev/null +++ b/lang/progmem.sh @@ -0,0 +1,113 @@ +#!/bin/sh +# +# Multi-language support postbuild script +# Description of proces: +# 0. remove output files +# 1. list symbol table of section '.text' from output elf file to text.sym (sorted by address) +# 2. list symbol table of section '.$PROGMEM' from all output object files to $PROGMEM.sym +# 3. filter only $PROGMEM symbols from text.sym and store it back to $PROGMEM.sym with absolute address +# 4. calculate start and stop address of section '.$PROGMEM' +# 5. extract string data from elf file to $PROGMEM.dat +# 6. prepare string data for character check and conversion (output to $PROGMEM.chr) +# 7. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt) +# +# Input files: +# Firmware.ino.elf +# *.o (all object files) +# +# Output files: +# text.sym +# $PROGMEM.sym +# $PROGMEM.lss +# $PROGMEM.dat +# $PROGMEM.chr +# $PROGMEM.var +# $PROGMEM.txt +# +# Program memory used +PROGMEM=progmem$1 +if [ -z "$1" ]; then PROGMEM=progmem1; fi +# +# Output folder and elf file: +OUTDIR="../../output" +OUTELF="$OUTDIR/Firmware.ino.elf" +# +# AVR gcc tools used: +OBJDUMP=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objdump.exe +#READELF=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-readelf.exe + + +# (0) +echo "step 0 - removing output files" +#remove output files if exists +if [ -e text.sym ]; then rm text.sym; fi +if [ -e $PROGMEM.sym ]; then rm $PROGMEM.sym; fi +if [ -e $PROGMEM.lss ]; then rm $PROGMEM.lss; fi +if [ -e $PROGMEM.dat ]; then rm $PROGMEM.dat; fi +if [ -e $PROGMEM.chr ]; then rm $PROGMEM.chr; fi +if [ -e $PROGMEM.var ]; then rm $PROGMEM.var; fi +if [ -e $PROGMEM.txt ]; then rm $PROGMEM.txt; fi + +# (1) +echo "step 1 - listing symbol table of section '.text'" +#list symbols from section '.text' into file text.sym (only address, size and name) +$OBJDUMP -t -j ".text" $OUTELF | tail -n +5 | grep -E "^[0-9a-f]{8} [gl] O" | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> text.sym + +# (2) +echo "step 2 - listing symbol table of section '.$PROGMEM'" +#loop over all object files +ls "$OUTDIR"/sketch/*.o | while read fn; do + echo " processing $fn" + #list symbols from section $PROGMEM (only address, size and name) + $OBJDUMP -t -j ".$PROGMEM" $fn | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym +done 2>/dev/null + +# (3) +echo "step 3 - filtering $PROGMEM symbols" +#create list of $PROGMEM symbol names separated by '\|' +progmem=$(cut -c19- $PROGMEM.sym) +progmem=$(echo $progmem | sed "s/ /\\\|/g") +#filter $PROGMEM symbols from section '.text' (result file will contain list sorted by absolute address) +cat text.sym | grep $progmem > $PROGMEM.sym + +# (4) +echo "step 4 - calculating start and stop address" +#calculate start addres of section ".$PROGMEM" +PROGMEM_BEG=$(head -n1 $PROGMEM.sym | while read offs size name; do echo "0x"$offs; done) +#calculate stop addres of section ".$PROGMEM" +PROGMEM_END=$(tail -n1 $PROGMEM.sym | while read offs size name; do printf "0x%x" $(("0x"$offs + "0x"$size)); done) +echo " START address = "$PROGMEM_BEG +echo " STOP address = "$PROGMEM_END + +# (5) +echo "step 5 - extracting string data from elf" +#dump $PROGMEM data in hex format, cut textual data (keep hex data only) +$OBJDUMP -d -j ".text" -w -z --start-address=$PROGMEM_BEG --stop-address=$PROGMEM_END $OUTELF | cut -c1-57 > $PROGMEM.lss +#convert $PROGMEM.lss to $PROGMEM.dat: +# replace empty lines with '|' (variables separated by empty lines) +# remove address from multiline variables (keep address at first variable line only) +# remove '<' and '>:', remove whitespace at end of lines +# remove line-endings, replace separator with '\n' (join hex data lines - each line will contain single variable) +# filter progmem symbols +cat $PROGMEM.lss | tail -n +7 | sed -E 's/^$/|/;s/^........:\t/ /;s/:/ /g;s/[ \t]*$//' |\ + tr -d '\n' | sed "s/[|]/\n/g" | grep $progmem > $PROGMEM.dat + +# (6) +echo "step 6 - preparing string data" +#convert $PROGMEM.dat to $PROGMEM.chr (prepare string data for character check and conversion) +# replace first space with tab +# replace second space with tab and space +# replace all remaining spaces with '\x' +# replace all tabs with spaces +cat $PROGMEM.dat | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr + +# (7) +#convert $PROGMEM.chr to $PROGMEM.var (convert data to text) +cat $PROGMEM.chr | \ + sed 's/\\x22/\\\\\\x22/g;' | \ + sed 's/\\x1b/\\\\\\x1b/g;' | \ + sed 's/\\x01/\\\\\\x01/g;' | \ + sed 's/\\x00$/\\x0d/;s/^/printf "/;s/$/"/' | sh > $PROGMEM.var +cat $PROGMEM.var | sed 's/\r/\n/g' |sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt + +read diff --git a/lang/readme.txt b/lang/readme.txt new file mode 100644 index 00000000..2587d400 --- /dev/null +++ b/lang/readme.txt @@ -0,0 +1,48 @@ +Nova podpora vice jazyku ve firmware + + +Zmeny oproti stavajicimu frameworku: +1. Deklarace lokalizovanych textu primo v kodu, neni nutne udrzovat tabulky. +2. Zatim dvoj jazycna verze (en_cz, en_de atd). Moznost rozsirit na vicejazycnou (en_cz_de - pro MK2). +3. Moznost vyberu druheho jazyka ulozeneho v SPI flash (nebude zabirat misto v interni flash, pouze MK3). +5. Bash postbuild proces namisto perloveho skriptu + nastroje na spravu slovniku. + +Popis: +Novy framework je trochu podobny jako znamy i18n20, ale sity na miru pro AVR atmega s ohledem na maximalni jednoduchost a usporu interni flashe. +Stringy ktere maji byt prelozene se deklaruji pomoci specialnich maker, zbytek obstara postbuild. +Vsechny lokalizovane texty se nachazi ve specialni sekci, v pripade AVR musi byt stringy umisteny v dolnich 64kB flash - tzv 'progmem'. +Po zbuildovani arduinem bude fungovat pouze anglictina, je treba spustit postbuild ktery na zaklade slovniku doplni data sekundarniho jazka a vytvori modifikovany hexfile. +Jedina data ktera je treba udrzovat jsou slovniky pro preklad. Jsou to textove soubory kde je vzdy sparovan anglicky text s prelozenym textem. +Kazdy text ve slovniku je jeden radek, muze obsahovat specialni znaky v hexadecimalni podobe (e.g. '\x0a'). Nasledujici radek je vzdy prelozeny text. +Tento jednoduchy format je zvolen proto aby bylo mozno slovniky a proces prekladu spravovat jen pomoci gitu a nekolika skriptu. + +Pokud pridame nebo zmenime nejaky text v kodu, zmeni se po zbuildovani a spusteni nastroje 'update.sh' soubor lang_en_code.txt. +To je generovany soubor ktery obsahuje vsechny lokalizovane texty pouzite v kodu setridene podle abecedy. +V gitu uvidime zmenu kterou rucne preneseme do slovniku lang_en_xx.txt, zaroven vytvorime pozadavek na preklad ci korekturu pozadovaneho textu. +Pokud pridame nebo zmenime nejaky text ve slovnikach, zmeni se po spusteni nastroje 'update.sh' soubor lang_en_dict.txt. +Ten obsahuje vsechny lokalizovane texty ze slovniku (v anglictine), respektive mnozinu jejich sjednoceni. +V idealnim pripade by soubory lang_en_code.txt a lang_en_dict.txt mely byt totozne. +Pokud se zmeni slovnik, je treba znovu vygenerovat binarni soubory lang_en_xx.bin. + + +Pouziti v kodu, priklady: + +1. deklarace lokalizovaneho textu v kodu - makro '_i': +puts_P(_i("Kill all humans!")); //v cz vypise "Zabit vsechny lidi!" + +2. deklarace lokalizovaneho textu jako globalni konstanty - makro 'PROGMEM_I1' a 'ISTR': +const char MSG_PREHEAT[] PROGMEM_I1 = ISTR("Preheat"); //deklarace +puts_P(get_translation(MSG_PREHEAT)); //v cz vypise "Predehrev" + +3. fukce get_translation - zkratka makro '_T': +puts_P(_T(MSG_PREHEAT)); //v cz vypise "Predehrev" + +4. deklarace lokalizovaneho textu jako lokalni promenne - makro '_I': +const char* text = preheat?_I("Preheat"):_I("Cooldown"); +puts_P(_T(text)); //v cz vypise "Predehrev" nebo "Zchlazeni" + +5. deklarace nelokalizovaneho textu - makro 'PROGMEM_N1' a '_n' nebo '_N': +const char MSG_MK3[] PROGMEM_N1 = "MK3"; //deklarace +const char* text = _n("MK3"); + nebo +const char* text = _N("MK3"); From d63a17c696d4c8f41537e816f3df0c707814ec57 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 22 May 2018 13:31:21 +0200 Subject: [PATCH 26/68] Safety timer not active during filament runout detection --- Firmware/Marlin.h | 3 +++ Firmware/Marlin_main.cpp | 30 ++++++++++++++++-------------- Firmware/ultralcd.cpp | 4 +--- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 5767b8b2..db1db3e4 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -347,6 +347,9 @@ extern bool sortAlpha; extern char dir_names[3][9]; +// save/restore printing +extern bool saved_printing; + extern void calculate_extruder_multipliers(); // Similar to the default Arduino delay function, diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 272cbcfe..8a3ca477 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -425,6 +425,10 @@ bool no_response = false; uint8_t important_status; uint8_t saved_filament_type; +// save/restore printing +bool saved_printing = false; + + //=========================================================================== //=============================Private Variables============================= //=========================================================================== @@ -477,6 +481,14 @@ unsigned long chdkHigh = 0; boolean chdkActive = false; #endif +// save/restore printing +static uint32_t saved_sdpos = 0; +static float saved_pos[4] = { 0, 0, 0, 0 }; +// Feedrate hopefully derived from an active block of the planner at the time the print has been canceled, in mm/min. +static float saved_feedrate2 = 0; +static uint8_t saved_active_extruder = 0; +static bool saved_extruder_under_pressure = false; + //=========================================================================== //=============================Routines====================================== //=========================================================================== @@ -7139,7 +7151,7 @@ static void handleSafetyTimer() #error Implemented only for one extruder. #endif //(EXTRUDERS > 1) static Timer safetyTimer; - if (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == 4) + if (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == 4) || saved_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL) || (!degTargetBed() && !degTargetHotend(0))) { safetyTimer.stop(); @@ -7148,11 +7160,11 @@ static void handleSafetyTimer() { safetyTimer.start(); } - else if (safetyTimer.expired(1800000ul)) + else if (safetyTimer.expired(1800000ul)) //30 min { setTargetBed(0); setTargetHotend(0, 0); - lcd_show_fullscreen_message_and_wait_P(MSG_BED_HEATING_SAFETY_DISABLED); + lcd_show_fullscreen_message_and_wait_P(MSG_BED_HEATING_SAFETY_DISABLED); } } #endif //SAFETYTIMER @@ -8400,17 +8412,7 @@ void restore_print_from_eeprom() { //////////////////////////////////////////////////////////////////////////////// -// new save/restore printing - -//extern uint32_t sdpos_atomic; - -bool saved_printing = false; -uint32_t saved_sdpos = 0; -float saved_pos[4] = {0, 0, 0, 0}; -// Feedrate hopefully derived from an active block of the planner at the time the print has been canceled, in mm/min. -float saved_feedrate2 = 0; -uint8_t saved_active_extruder = 0; -bool saved_extruder_under_pressure = false; +// save/restore printing void stop_and_save_print_to_ram(float z_move, float e_move) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f190149e..415a3b01 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -20,7 +20,7 @@ #ifdef PAT9125 #include "pat9125.h" -#endif //PAT9125 +#endif //PAT9125 #ifdef TMC2130 #include "tmc2130.h" @@ -5625,8 +5625,6 @@ void lcd_confirm_print() } -extern bool saved_printing; - static void lcd_main_menu() { From 137e1c5027895c9d741e618ab076bb915eb49079 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 22 May 2018 13:33:31 +0200 Subject: [PATCH 27/68] whitespace --- Firmware/Marlin_main.cpp | 2 +- Firmware/ultralcd.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 8a3ca477..e5f5a5cb 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7164,7 +7164,7 @@ static void handleSafetyTimer() { setTargetBed(0); setTargetHotend(0, 0); - lcd_show_fullscreen_message_and_wait_P(MSG_BED_HEATING_SAFETY_DISABLED); + lcd_show_fullscreen_message_and_wait_P(MSG_BED_HEATING_SAFETY_DISABLED); } } #endif //SAFETYTIMER diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 415a3b01..3a0b922f 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -20,7 +20,7 @@ #ifdef PAT9125 #include "pat9125.h" -#endif //PAT9125 +#endif //PAT9125 #ifdef TMC2130 #include "tmc2130.h" From 074f53547cea902e91cef164b6d64ab251230839 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 20:23:37 +0200 Subject: [PATCH 28/68] New ML support - progmem script fixed --- lang/progmem.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lang/progmem.sh b/lang/progmem.sh index cee3af61..ea22e5a7 100644 --- a/lang/progmem.sh +++ b/lang/progmem.sh @@ -61,12 +61,13 @@ ls "$OUTDIR"/sketch/*.o | while read fn; do #list symbols from section $PROGMEM (only address, size and name) $OBJDUMP -t -j ".$PROGMEM" $fn | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym done 2>/dev/null - +#exit # (3) echo "step 3 - filtering $PROGMEM symbols" #create list of $PROGMEM symbol names separated by '\|' progmem=$(cut -c19- $PROGMEM.sym) -progmem=$(echo $progmem | sed "s/ /\\\|/g") +progmem=$(echo $progmem | sed "s/ /\\\b\\\|\\\b/g") +progmem='\b'$progmem'\b' #filter $PROGMEM symbols from section '.text' (result file will contain list sorted by absolute address) cat text.sym | grep $progmem > $PROGMEM.sym @@ -104,10 +105,12 @@ cat $PROGMEM.dat | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr # (7) #convert $PROGMEM.chr to $PROGMEM.var (convert data to text) cat $PROGMEM.chr | \ + sed 's/ \\xff\\xff/ /;' | \ sed 's/\\x22/\\\\\\x22/g;' | \ sed 's/\\x1b/\\\\\\x1b/g;' | \ sed 's/\\x01/\\\\\\x01/g;' | \ - sed 's/\\x00$/\\x0d/;s/^/printf "/;s/$/"/' | sh > $PROGMEM.var + sed 's/\\xf8/\\\\\\xf8/g;' | \ + sed 's/\\x00$/\\x0a/;s/^/printf "/;s/$/"/' | sh > $PROGMEM.var cat $PROGMEM.var | sed 's/\r/\n/g' |sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt read From b2413fe4118c7f4a850e5c0df323e11e14754d51 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 20:26:45 +0200 Subject: [PATCH 29/68] New ML support - migration script make_lang_en.sh + result file lang_en.txt --- lang/lang_en.txt | 343 +++++++++++++++++++++++++++++++++++ lang_upgrade/make_lang_en.sh | 12 ++ 2 files changed, 355 insertions(+) create mode 100644 lang/lang_en.txt create mode 100644 lang_upgrade/make_lang_en.sh diff --git a/lang/lang_en.txt b/lang/lang_en.txt new file mode 100644 index 00000000..7622a37e --- /dev/null +++ b/lang/lang_en.txt @@ -0,0 +1,343 @@ + [off + PlannerBufferBytes: + \002 Fact + \002 Max + \002 Min + cold extrusion prevented + Free Memory: + Last Updated: + of 4 + of 4 + of 9 +[0;0] point offset +\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode +\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode +\xf8Refresh +Adjusting Z +All +All correct +All is done. Happy printing! +and press the knob +Are left and right Z~carriages all up? +Auto adjust Z? +Auto home +AutoLoad filament +Autoloading filament available only when filament sensor is turned on... +Autoloading filament is active, just press the knob and insert filament... +Axis +Axis length +Babystepping X +Babystepping Y +Bed +Bed / Heater +Bed done +Bed Heating +Bed level correct +Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset. +Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset. +Bed leveling failed. Sensor triggered too high. Waiting for reset. +Begin file list +Belt status +Blackout occurred. Recover print? +Calibrate +Calibrate E +Calibrate XYZ +Calibrate Z +Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done. +Calibrating Z +Calibrating Z +Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done. +Calibration +Calibration done +Cannot enter subdir: +Cannot open subdir +Card inserted +Card removed +Color not correct +Cooldown +Crash det. [on] +Crash det. [N/A] +Crash det. [off] +Crash detected. +Current +Date: +Disable steppers +Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration. +Do you want to repeat last step to readjust distance between nozzle and heatbed? +E calibration finished. Please clean the nozzle. Click when done. +E-correct +End file list +Endstop +Endstop not hit +Endstops +endstops hit: +enqueing \x22 +Error - static memory has been overwritten +error writing to file +ERROR: +ERROR: Filament sensor is not responding, please check connection. +Extruder +Extruder +Extruder 1 +Extruder 2 +Extruder 3 +Extruder 4 +Extruder fan: +Extruder info +F. autoload [on] +F. autoload [N/A] +F. autoload [off] +Fan speed +Fan test +Fans check [on] +Fans check [off] +Fil. sensor [on] +Fil. sensor [N/A] +Fil. sensor [off] +Filament extruding & with correct color? +Filament not loaded +Filament sensor +Filament sensor: +Filament used: +File incomplete. Continue anyway? +File opened: +File selected +Finishing movements +First layer cal. +First, I will run the selftest to check most common assembly problems. +Flow +forum.prusa3d.com +Front print fan? +Front side[um] +Front/left fans +Heater/Thermistor +Heating +Heating disabled by safety timer. +Heating done. +Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process? +howto.prusa3d.com +Change extruder +Change filament +Change SD card +Change success! +Changed correctly? +Changing filament! +Checking bed +Checking endstops +Checking hotend " +Checking sensors +Checking X axis +Checking Y axis +Checking Z axis +checksum mismatch, Last Line: +Choose extruder: +I will run xyz calibration now. It will take approx. 12 mins. +I will run z calibration now. +I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration. +Improving bed calibration point +Info screen +Init. SD card +Insert filament +Insert filament into extruder 1. Click when done. +Insert filament into extruder 2. Click when done. +Insert filament into extruder 3. Click when done. +Insert filament into extruder 4. Click when done. +Is filament loaded? +Is it PLA filament? +Is PLA filament loaded? +Is steel sheet on heatbed? +Iteration +KILLED. +Left hotend fan? +Left side [um] +Left: +Live adjust Z +Load all +Load filament +Load filament 1 +Load filament 2 +Load filament 3 +Load filament 4 +Loading color +Loading filament +Loose pulley +M104 Invalid extruder +M105 Invalid extruder +M109 Invalid extruder +M117 First layer cal. +M200 Invalid extruder +M218 Invalid extruder +M221 Invalid extruder +Main +Mark filament 100mm from extruder body. Click when done. +Measured skew: +Measuring reference height of calibration point +Mesh Bed Leveling +Mode [Normal] +Mode [silent] +Mode [Stealth] +Mode [auto power] +Mode [high power]" +Motor +Move axis +Move X +Move Y +Move Z +New firmware version available: +No +No Checksum with line number, Last Line: +No move. +No SD card +No thermistors - no temperature +Not connected +Not spinning +Now I will calibrate distance between tip of the nozzle and heatbed surface. +Now I will preheat nozzle for PLA. +Nozzle +Nozzle FAN: +Nozzle2 +Nozzle3 +ok +Old settings found. Default PID, Esteps etc. will be set. +open +open failed, File: +openRoot failed +Pause print +Pick print +PID cal. +PID cal. finished +PID calibration +PINDA Heating +Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately. +Please clean heatbed and then press the knob. +Please clean the nozzle for calibration. Click when done. +Please check :" +Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer. +Please insert PLA filament to the extruder, then press knob to load it. +Please load PLA filament and then resume Wizard by rebooting the printer. +Please load PLA filament first. +Please open idler and remove filament manually. +Please place steel sheet on heatbed. +Please press the knob to unload filament +Please pull out filament immediately +Please remove steel sheet from heatbed. +Please upgrade. +Please wait +PowerUp +Preheat +Preheat the nozzle! +Preheating nozzle. Please wait. +Prepare new filament +Press knob to preheat nozzle and continue. +Print aborted +Print fan: +Print FAN: +Print from SD +Print paused +Print time: +Printer disconnected +Printer halted. kill() called! +Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow. +Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting) +Prusa i3 MK3 ready. +prusa3d.com +Rear side [um] +Recovering print +Reporting endstop status +Resend: +Reset +Reset XYZ calibr. +Resume print +Resuming print +Resuming print +Right side[um] +Right: +Rotate knob until mark reaches extruder body. Click when done. +RPi port [on] +RPi port [off] +Running Wizard will delete current calibration results and start from the beginning. Continue? +SD card [normal] +SD card [FlshAir] +SD card ok +SD init fail +SD printing byte +Searching bed calibration point +Select language +Self test OK +Self test start +Selftest +Selftest error ! +Selftest failed +Selftest will be run to calibrate accurate sensorless rehoming. +Set temperature: +Settings +Severe skew: +Show end stops +Sleep... +Slight skew: +Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100. +Sort: [None] +Sort: [Time] +Sort: [Alphabet] +Sorting files +Speed +Spinning +Stable ambient temperature 21-26C is needed a rigid stand is required. +Statistics +Steprate too high: +Stop print +STOPPED. +Support +Swapped +Temp. cal. +Temp. cal. [on] +Temp. cal. [off] +Temp. calibration +Temperature +Temperature calibration failed +Temperature calibration has not been run yet +Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal. +Temperatures +Total filament : +Total print time : +TRIGGERED +Tune +Unload all +Unload filament +Unload filament 1 +Unload filament 2 +Unload filament 3 +Unload filament 4 +Unloading filament +Used during print +Voltages +volume.init failed +Wait for user... +Waiting for nozzle and bed cooling +Waiting for PINDA probe cooling +Warning: both printer type and motherboard type changed. +Warning: motherboard type changed. +Warning: printer type changed. +WARNING: This is an unofficial, unsupported build. Use at your own risk! +Was filament unload successful? +Wiring error +Wizard +workDir open failed +Writing to file: +XYZ cal. details +XYZ calibration all right. Skew will be corrected automatically. +XYZ calibration all right. X/Y axes are slightly skewed. Good job! +XYZ calibration compromised. Front calibration points not reachable. +XYZ calibration compromised. Left front calibration point not reachable. +XYZ calibration compromised. Right front calibration point not reachable. +XYZ calibration failed. Bed calibration point was not found. +XYZ calibration failed. Front calibration points not reachable. +XYZ calibration failed. Left front calibration point not reachable. +XYZ calibration failed. Please consult the manual. +XYZ calibration failed. Right front calibration point not reachable. +XYZ calibration ok. X/Y axes are perpendicular. Congratulations! +Y distance from min: +Yes +You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage. +You can always resume the Wizard from Calibration -> Wizard. diff --git a/lang_upgrade/make_lang_en.sh b/lang_upgrade/make_lang_en.sh new file mode 100644 index 00000000..4b640f37 --- /dev/null +++ b/lang_upgrade/make_lang_en.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# make_lang_en.sh - create english dictionary from msgs +echo "make_lang_en.sh" +cat msgs_en_used_once.txt msgs_en_used_more.txt | cut -f4- -d' ' |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g;s/\"//;s/\"$//" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' |\ + sort > lang_en.txt +echo "finished... press any key" +read +exit \ No newline at end of file From 7e3f675469fd6a74d7b874b578b299b50af7faee Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 22 May 2018 20:30:55 +0200 Subject: [PATCH 30/68] New ML support - migration - fixed some messages all variants verified according to lang_en.txt (release only) config.h updated (enabled ML support) --- Firmware/config.h | 4 ++-- Firmware/messages.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Firmware/config.h b/Firmware/config.h index 1a2b1ebd..14e88247 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -19,8 +19,8 @@ #define TMC2130_SPSR SPI_SPSR(TMC2130_SPI_RATE) //LANG - Multi-language support -#define LANG_MODE 0 // primary language only -//#define LANG_MODE 1 // sec. language support +//#define LANG_MODE 0 // primary language only +#define LANG_MODE 1 // sec. language support #define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12kb) diff --git a/Firmware/messages.c b/Firmware/messages.c index 25603435..8ee082ce 100644 --- a/Firmware/messages.c +++ b/Firmware/messages.c @@ -23,9 +23,9 @@ const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////c=0 r=0 const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8 const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////c=0 r=0 const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1 -const char MSG_CRASHDETECT_NA[] PROGMEM_I1 = ISTR("Crash det. [N/A]"); ////c=0 r=0 -const char MSG_CRASHDETECT_OFF[] PROGMEM_I1 = ISTR("Crash det. [off]"); ////c=0 r=0 -const char MSG_CRASHDETECT_ON[] PROGMEM_I1 = ISTR("Crash det. [on]"); ////c=0 r=0 +const char MSG_CRASHDETECT_NA[] PROGMEM_I1 = ISTR("Crash det. [N/A]"); ////c=0 r=0 +const char MSG_CRASHDETECT_OFF[] PROGMEM_I1 = ISTR("Crash det. [off]"); ////c=0 r=0 +const char MSG_CRASHDETECT_ON[] PROGMEM_I1 = ISTR("Crash det. [on]"); ////c=0 r=0 const char MSG_ENDSTOP_HIT[] PROGMEM_I1 = ISTR("TRIGGERED"); ////c=0 r=0 const char MSG_ENDSTOP_OPEN[] PROGMEM_I1 = ISTR("open"); ////c=0 r=0 const char MSG_ENDSTOPS_HIT[] PROGMEM_I1 = ISTR("endstops hit: "); ////c=0 r=0 @@ -46,7 +46,7 @@ const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); / const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8 const char MSG_FSENS_AUTOLOAD_NA[] PROGMEM_I1 = ISTR("F. autoload [N/A]"); ////c=17 r=1 const char MSG_FSENSOR_OFF[] PROGMEM_I1 = ISTR("Fil. sensor [off]"); ////c=0 r=0 -const char MSG_FSENSOR_ON[] PROGMEM_I1 = ISTR("Fil. sensor [on]"); ////c=0 r=0 +const char MSG_FSENSOR_ON[] PROGMEM_I1 = ISTR("Fil. sensor [on]"); ////c=0 r=0 const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////c=0 r=0 const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20 r=0 const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////c=0 r=0 @@ -87,9 +87,9 @@ const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////c=0 r=0 const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////c=0 r=0 const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////c=0 r=0 const char MSG_SILENT_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [high power]"); ////c=0 r=0 -const char MSG_SILENT_MODE_ON[] PROGMEM_I1 = ISTR("Mode [silent]"); ////c=0 r=0 -const char MSG_STEALTH_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [Normal]"); ////c=0 r=0 -const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode [Stealth]"); ////c=0 r=0 +const char MSG_SILENT_MODE_ON[] PROGMEM_I1 = ISTR("Mode [silent]"); ////c=0 r=0 +const char MSG_STEALTH_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [Normal]"); ////c=0 r=0 +const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode [Stealth]"); ////c=0 r=0 const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2 const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////c=0 r=0 const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////c=0 r=0 From 4e14e6cdbb7a4680e93a629b69d22f31f9b50f8b Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 23 May 2018 14:17:23 +0200 Subject: [PATCH 31/68] New ML support - dictionary generators (scripts) and dictionaries: make_lang_en.sh - english dictionary generator script make_lang - english dictionary generator script (new) lang_en.txt - english dictionary (format changed) lang_en_cz.txt - czech dictionary (new file) --- lang/lang_en.txt | 1371 ++++++++++++++++++++++-------- lang/lang_en_cz.txt | 1372 +++++++++++++++++++++++++++++++ lang_upgrade/make_lang_en.sh | 7 +- lang_upgrade/make_lang_en_cz.sh | 60 ++ 4 files changed, 2464 insertions(+), 346 deletions(-) create mode 100644 lang/lang_en_cz.txt create mode 100644 lang_upgrade/make_lang_en_cz.sh diff --git a/lang/lang_en.txt b/lang/lang_en.txt index 7622a37e..71bcfe77 100644 --- a/lang/lang_en.txt +++ b/lang/lang_en.txt @@ -1,343 +1,1028 @@ - [off - PlannerBufferBytes: - \002 Fact - \002 Max - \002 Min - cold extrusion prevented - Free Memory: - Last Updated: - of 4 - of 4 - of 9 -[0;0] point offset -\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode -\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode -\xf8Refresh -Adjusting Z -All -All correct -All is done. Happy printing! -and press the knob -Are left and right Z~carriages all up? -Auto adjust Z? -Auto home -AutoLoad filament -Autoloading filament available only when filament sensor is turned on... -Autoloading filament is active, just press the knob and insert filament... -Axis -Axis length -Babystepping X -Babystepping Y -Bed -Bed / Heater -Bed done -Bed Heating -Bed level correct -Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset. -Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset. -Bed leveling failed. Sensor triggered too high. Waiting for reset. -Begin file list -Belt status -Blackout occurred. Recover print? -Calibrate -Calibrate E -Calibrate XYZ -Calibrate Z -Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done. -Calibrating Z -Calibrating Z -Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done. -Calibration -Calibration done -Cannot enter subdir: -Cannot open subdir -Card inserted -Card removed -Color not correct -Cooldown -Crash det. [on] -Crash det. [N/A] -Crash det. [off] -Crash detected. -Current -Date: -Disable steppers -Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration. -Do you want to repeat last step to readjust distance between nozzle and heatbed? -E calibration finished. Please clean the nozzle. Click when done. -E-correct -End file list -Endstop -Endstop not hit -Endstops -endstops hit: -enqueing \x22 -Error - static memory has been overwritten -error writing to file -ERROR: -ERROR: Filament sensor is not responding, please check connection. -Extruder -Extruder -Extruder 1 -Extruder 2 -Extruder 3 -Extruder 4 -Extruder fan: -Extruder info -F. autoload [on] -F. autoload [N/A] -F. autoload [off] -Fan speed -Fan test -Fans check [on] -Fans check [off] -Fil. sensor [on] -Fil. sensor [N/A] -Fil. sensor [off] -Filament extruding & with correct color? -Filament not loaded -Filament sensor -Filament sensor: -Filament used: -File incomplete. Continue anyway? -File opened: -File selected -Finishing movements -First layer cal. -First, I will run the selftest to check most common assembly problems. -Flow -forum.prusa3d.com -Front print fan? -Front side[um] -Front/left fans -Heater/Thermistor -Heating -Heating disabled by safety timer. -Heating done. -Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process? -howto.prusa3d.com -Change extruder -Change filament -Change SD card -Change success! -Changed correctly? -Changing filament! -Checking bed -Checking endstops -Checking hotend " -Checking sensors -Checking X axis -Checking Y axis -Checking Z axis -checksum mismatch, Last Line: -Choose extruder: -I will run xyz calibration now. It will take approx. 12 mins. -I will run z calibration now. -I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration. -Improving bed calibration point -Info screen -Init. SD card -Insert filament -Insert filament into extruder 1. Click when done. -Insert filament into extruder 2. Click when done. -Insert filament into extruder 3. Click when done. -Insert filament into extruder 4. Click when done. -Is filament loaded? -Is it PLA filament? -Is PLA filament loaded? -Is steel sheet on heatbed? -Iteration -KILLED. -Left hotend fan? -Left side [um] -Left: -Live adjust Z -Load all -Load filament -Load filament 1 -Load filament 2 -Load filament 3 -Load filament 4 -Loading color -Loading filament -Loose pulley -M104 Invalid extruder -M105 Invalid extruder -M109 Invalid extruder -M117 First layer cal. -M200 Invalid extruder -M218 Invalid extruder -M221 Invalid extruder -Main -Mark filament 100mm from extruder body. Click when done. -Measured skew: -Measuring reference height of calibration point -Mesh Bed Leveling -Mode [Normal] -Mode [silent] -Mode [Stealth] -Mode [auto power] -Mode [high power]" -Motor -Move axis -Move X -Move Y -Move Z -New firmware version available: -No -No Checksum with line number, Last Line: -No move. -No SD card -No thermistors - no temperature -Not connected -Not spinning -Now I will calibrate distance between tip of the nozzle and heatbed surface. -Now I will preheat nozzle for PLA. -Nozzle -Nozzle FAN: -Nozzle2 -Nozzle3 -ok -Old settings found. Default PID, Esteps etc. will be set. -open -open failed, File: -openRoot failed -Pause print -Pick print -PID cal. -PID cal. finished -PID calibration -PINDA Heating -Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately. -Please clean heatbed and then press the knob. -Please clean the nozzle for calibration. Click when done. -Please check :" -Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer. -Please insert PLA filament to the extruder, then press knob to load it. -Please load PLA filament and then resume Wizard by rebooting the printer. -Please load PLA filament first. -Please open idler and remove filament manually. -Please place steel sheet on heatbed. -Please press the knob to unload filament -Please pull out filament immediately -Please remove steel sheet from heatbed. -Please upgrade. -Please wait -PowerUp -Preheat -Preheat the nozzle! -Preheating nozzle. Please wait. -Prepare new filament -Press knob to preheat nozzle and continue. -Print aborted -Print fan: -Print FAN: -Print from SD -Print paused -Print time: -Printer disconnected -Printer halted. kill() called! -Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow. -Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting) -Prusa i3 MK3 ready. -prusa3d.com -Rear side [um] -Recovering print -Reporting endstop status -Resend: -Reset -Reset XYZ calibr. -Resume print -Resuming print -Resuming print -Right side[um] -Right: -Rotate knob until mark reaches extruder body. Click when done. -RPi port [on] -RPi port [off] -Running Wizard will delete current calibration results and start from the beginning. Continue? -SD card [normal] -SD card [FlshAir] -SD card ok -SD init fail -SD printing byte -Searching bed calibration point -Select language -Self test OK -Self test start -Selftest -Selftest error ! -Selftest failed -Selftest will be run to calibrate accurate sensorless rehoming. -Set temperature: -Settings -Severe skew: -Show end stops -Sleep... -Slight skew: -Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100. -Sort: [None] -Sort: [Time] -Sort: [Alphabet] -Sorting files -Speed -Spinning -Stable ambient temperature 21-26C is needed a rigid stand is required. -Statistics -Steprate too high: -Stop print -STOPPED. -Support -Swapped -Temp. cal. -Temp. cal. [on] -Temp. cal. [off] -Temp. calibration -Temperature -Temperature calibration failed -Temperature calibration has not been run yet -Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal. -Temperatures -Total filament : -Total print time : -TRIGGERED -Tune -Unload all -Unload filament -Unload filament 1 -Unload filament 2 -Unload filament 3 -Unload filament 4 -Unloading filament -Used during print -Voltages -volume.init failed -Wait for user... -Waiting for nozzle and bed cooling -Waiting for PINDA probe cooling -Warning: both printer type and motherboard type changed. -Warning: motherboard type changed. -Warning: printer type changed. -WARNING: This is an unofficial, unsupported build. Use at your own risk! -Was filament unload successful? -Wiring error -Wizard -workDir open failed -Writing to file: -XYZ cal. details -XYZ calibration all right. Skew will be corrected automatically. -XYZ calibration all right. X/Y axes are slightly skewed. Good job! -XYZ calibration compromised. Front calibration points not reachable. -XYZ calibration compromised. Left front calibration point not reachable. -XYZ calibration compromised. Right front calibration point not reachable. -XYZ calibration failed. Bed calibration point was not found. -XYZ calibration failed. Front calibration points not reachable. -XYZ calibration failed. Left front calibration point not reachable. -XYZ calibration failed. Please consult the manual. -XYZ calibration failed. Right front calibration point not reachable. -XYZ calibration ok. X/Y axes are perpendicular. Congratulations! -Y distance from min: -Yes -You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." -You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage. -You can always resume the Wizard from Calibration -> Wizard. +#MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 +" [off" + +#MSG_PLANNER_BUFFER_BYTES c=0 r=0 +" PlannerBufferBytes: " + +#MSG_FACTOR c=0 r=0 +" \002 Fact" + +#MSG_MAX c=0 r=0 +" \002 Max" + +#MSG_MIN c=0 r=0 +" \002 Min" + +#MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 +" cold extrusion prevented" + +#MSG_FREE_MEMORY c=0 r=0 +" Free Memory: " + +#MSG_CONFIGURATION_VER c=0 r=0 +" Last Updated: " + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 +" of 9" + +#MSG_MEASURED_OFFSET c=0 r=0 +"[0;0] point offset" + +#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" + +#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" + +#MSG_REFRESH c=0 r=0 +"\xf8Refresh" + +#MSG_BABYSTEPPING_Z c=20 r=0 +"Adjusting Z" + +#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 +"All correct " + +#MSG_WIZARD_DONE c=20 r=8 +"All is done. Happy printing!" + +#MSG_ALL c=19 r=1 +"All" + +#MSG_PRESS c=20 r=0 +"and press the knob" + +#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +"Are left and right Z~carriages all up?" + +#MSG_ADJUSTZ c=0 r=0 +"Auto adjust Z?" + +#MSG_AUTO_HOME c=0 r=0 +"Auto home" + +#MSG_AUTOLOAD_FILAMENT c=17 r=0 +"AutoLoad filament" + +#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +"Autoloading filament available only when filament sensor is turned on..." + +#MSG_AUTOLOADING_ENABLED c=20 r=4 +"Autoloading filament is active, just press the knob and insert filament..." + +#MSG_SELFTEST_AXIS_LENGTH c=0 r=0 +"Axis length" + +#MSG_SELFTEST_AXIS c=0 r=0 +"Axis" + +#MSG_BABYSTEPPING_X c=0 r=0 +"Babystepping X" + +#MSG_BABYSTEPPING_Y c=0 r=0 +"Babystepping Y" + +#MSG_SELFTEST_BEDHEATER c=0 r=0 +"Bed / Heater" + +#MSG_BED_DONE c=0 r=0 +"Bed done" + +#MSG_BED_HEATING c=0 r=0 +"Bed Heating" + +#MSG_BED_CORRECTION_MENU c=0 r=0 +"Bed level correct" + +#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 +"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." + +#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 +"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." + +#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 +"Bed leveling failed. Sensor triggered too high. Waiting for reset." + +#MSG_BED c=0 r=0 +"Bed" + +#MSG_BEGIN_FILE_LIST c=0 r=0 +"Begin file list" + +#MSG_MENU_BELT_STATUS c=15 r=1 +"Belt status" + +#MSG_RECOVER_PRINT c=20 r=2 +"Blackout occurred. Recover print?" + +#MSG_CALIBRATE_E c=20 r=1 +"Calibrate E" + +#MSG_CALIBRATE_BED c=0 r=0 +"Calibrate XYZ" + +#MSG_HOMEYZ c=0 r=0 +"Calibrate Z" + +#MSG_CALIBRATE_PINDA c=17 r=1 +"Calibrate" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." + +#MSG_CALIBRATE_Z_AUTO c=20 r=2 +"Calibrating Z" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." + +#MSG_HOMEYZ_DONE c=0 r=0 +"Calibration done" + +#MSG_MENU_CALIBRATION c=0 r=0 +"Calibration" + +#MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 +"Cannot enter subdir: " + +#MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 +"Cannot open subdir" + +#MSG_SD_INSERTED c=0 r=0 +"Card inserted" + +#MSG_SD_REMOVED c=0 r=0 +"Card removed" + +#MSG_NOT_COLOR c=0 r=0 +"Color not correct" + +#MSG_COOLDOWN c=0 r=0 +"Cooldown" + +#MSG_CRASHDETECT_ON c=0 r=0 +"Crash det. [on]" + +#MSG_CRASHDETECT_NA c=0 r=0 +"Crash det. [N/A]" + +#MSG_CRASHDETECT_OFF c=0 r=0 +"Crash det. [off]" + +#MSG_CRASH_DETECTED c=20 r=1 +"Crash detected." + +#MSG_CURRENT c=19 r=1 +"Current" + +#MSG_DATE c=17 r=1 +"Date:" + +#MSG_DISABLE_STEPPERS c=0 r=0 +"Disable steppers" + +#MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." + +#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +"Do you want to repeat last step to readjust distance between nozzle and heatbed?" + +#MSG_CLEAN_NOZZLE_E c=20 r=8 +"E calibration finished. Please clean the nozzle. Click when done." + +#MSG_EXTRUDER_CORRECTION c=9 r=0 +"E-correct" + +#MSG_END_FILE_LIST c=0 r=0 +"End file list" + +#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 +"Endstop not hit" + +#MSG_SELFTEST_ENDSTOP c=0 r=0 +"Endstop" + +#MSG_ENDSTOPS_HIT c=0 r=0 +"endstops hit: " + +#MSG_SELFTEST_ENDSTOPS c=0 r=0 +"Endstops" + +#MSG_Enqueing c=0 r=0 +"enqueing \x22" + +#MSG_STACK_ERROR c=20 r=4 +"Error - static memory has been overwritten" + +#MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 +"error writing to file" + +#MSG_FSENS_NOT_RESPONDING c=20 r=4 +"ERROR: Filament sensor is not responding, please check connection." + +#MSG_ERROR c=0 r=0 +"ERROR:" + +#MSG_EXTRUDER_1 c=17 r=1 +"Extruder 1" + +#MSG_EXTRUDER_2 c=17 r=1 +"Extruder 2" + +#MSG_EXTRUDER_3 c=17 r=1 +"Extruder 3" + +#MSG_EXTRUDER_4 c=17 r=1 +"Extruder 4" + +#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 +"Extruder fan:" + +#MSG_INFO_EXTRUDER c=15 r=1 +"Extruder info" + +#MSG_EXTRUDER c=17 r=1 +"Extruder" + +#MSG_MOVE_E c=0 r=0 +"Extruder" + +#MSG_FSENS_AUTOLOAD_ON c=17 r=1 +"F. autoload [on]" + +#MSG_FSENS_AUTOLOAD_NA c=17 r=1 +"F. autoload [N/A]" + +#MSG_FSENS_AUTOLOAD_OFF c=17 r=1 +"F. autoload [off]" + +#MSG_FAN_SPEED c=14 r=0 +"Fan speed" + +#MSG_SELFTEST_FAN c=20 r=0 +"Fan test" + +#MSG_FANS_CHECK_ON c=17 r=1 +"Fans check [on]" + +#MSG_FANS_CHECK_OFF c=17 r=1 +"Fans check [off]" + +#MSG_FSENSOR_ON c=0 r=0 +"Fil. sensor [on]" + +#MSG_FSENSOR_NA c=0 r=0 +"Fil. sensor [N/A]" + +#MSG_FSENSOR_OFF c=0 r=0 +"Fil. sensor [off]" + +#MSG_FILAMENT_CLEAN c=20 r=2 +"Filament extruding & with correct color?" + +#MSG_NOT_LOADED c=19 r=0 +"Filament not loaded" + +#MSG_FILAMENT_SENSOR c=20 r=0 +"Filament sensor" + +#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 +"Filament sensor:" + +#MSG_STATS_FILAMENTUSED c=20 r=0 +"Filament used: " + +#MSG_FILE_INCOMPLETE c=20 r=2 +"File incomplete. Continue anyway?" + +#MSG_SD_FILE_OPENED c=0 r=0 +"File opened: " + +#MSG_SD_FILE_SELECTED c=0 r=0 +"File selected" + +#MSG_FINISHING_MOVEMENTS c=20 r=1 +"Finishing movements" + +#MSG_V2_CALIBRATION c=17 r=1 +"First layer cal." + +#MSG_WIZARD_SELFTEST c=20 r=8 +"First, I will run the selftest to check most common assembly problems." + +#MSG_FLOW c=0 r=0 +"Flow" + +#MSG_PRUSA3D_FORUM c=0 r=0 +"forum.prusa3d.com" + +#MSG_SELFTEST_COOLING_FAN c=20 r=0 +"Front print fan?" + +#MSG_BED_CORRECTION_FRONT c=14 r=1 +"Front side[um]" + +#MSG_SELFTEST_FANS c=0 r=0 +"Front/left fans" + +#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 +"Heater/Thermistor" + +#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 +"Heating disabled by safety timer." + +#MSG_HEATING_COMPLETE c=20 r=0 +"Heating done." + +#MSG_HEATING c=0 r=0 +"Heating" + +#MSG_WIZARD_WELCOME c=20 r=7 +"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" + +#MSG_PRUSA3D_HOWTO c=0 r=0 +"howto.prusa3d.com" + +#MSG_CHANGE_EXTR c=20 r=1 +"Change extruder" + +#MSG_FILAMENTCHANGE c=0 r=0 +"Change filament" + +#MSG_CNG_SDCARD c=0 r=0 +"Change SD card" + +#MSG_CHANGE_SUCCESS c=0 r=0 +"Change success!" + +#MSG_CORRECTLY c=20 r=0 +"Changed correctly?" + +#MSG_CHANGING_FILAMENT c=20 r=0 +"Changing filament!" + +#MSG_SELFTEST_CHECK_BED c=20 r=0 +"Checking bed " + +#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 +"Checking endstops" + +#MSG_SELFTEST_CHECK_HOTEND c=20 r=0 +"Checking hotend " + +#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 +"Checking sensors " + +#MSG_SELFTEST_CHECK_X c=20 r=0 +"Checking X axis " + +#MSG_SELFTEST_CHECK_Y c=20 r=0 +"Checking Y axis " + +#MSG_SELFTEST_CHECK_Z c=20 r=0 +"Checking Z axis " + +#MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 +"checksum mismatch, Last Line: " + +#MSG_CHOOSE_EXTRUDER c=20 r=1 +"Choose extruder:" + +#MSG_WIZARD_XYZ_CAL c=20 r=8 +"I will run xyz calibration now. It will take approx. 12 mins." + +#MSG_WIZARD_Z_CAL c=20 r=8 +"I will run z calibration now." + +#MSG_WIZARD_V2_CAL_2 c=20 r=12 +"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Improving bed calibration point" + +#MSG_WATCH c=0 r=0 +"Info screen" + +#MSG_INIT_SDCARD c=0 r=0 +"Init. SD card" + +#MSG_FILAMENT_LOADING_T0 c=20 r=4 +"Insert filament into extruder 1. Click when done." + +#MSG_FILAMENT_LOADING_T1 c=20 r=4 +"Insert filament into extruder 2. Click when done." + +#MSG_FILAMENT_LOADING_T2 c=20 r=4 +"Insert filament into extruder 3. Click when done." + +#MSG_FILAMENT_LOADING_T3 c=20 r=4 +"Insert filament into extruder 4. Click when done." + +#MSG_INSERT_FILAMENT c=20 r=0 +"Insert filament" + +#MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +"Is filament loaded?" + +#MSG_WIZARD_PLA_FILAMENT c=20 r=2 +"Is it PLA filament?" + +#MSG_PLA_FILAMENT_LOADED c=20 r=2 +"Is PLA filament loaded?" + +#MSG_STEEL_SHEET_CHECK c=20 r=2 +"Is steel sheet on heatbed?" + +#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 +"Iteration " + +#MSG_KILLED c=0 r=0 +"KILLED. " + +#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 +"Left hotend fan?" + +#MSG_BED_CORRECTION_LEFT c=14 r=1 +"Left side [um]" + +#MSG_LEFT c=12 r=1 +"Left:" + +#MSG_BABYSTEP_Z c=0 r=0 +"Live adjust Z" + +#MSG_LOAD_ALL c=0 r=0 +"Load all" + +#MSG_LOAD_FILAMENT_1 c=17 r=0 +"Load filament 1" + +#MSG_LOAD_FILAMENT_2 c=17 r=0 +"Load filament 2" + +#MSG_LOAD_FILAMENT_3 c=17 r=0 +"Load filament 3" + +#MSG_LOAD_FILAMENT_4 c=17 r=0 +"Load filament 4" + +#MSG_LOAD_FILAMENT c=17 r=0 +"Load filament" + +#MSG_LOADING_COLOR c=0 r=0 +"Loading color" + +#MSG_LOADING_FILAMENT c=20 r=0 +"Loading filament" + +#MSG_LOOSE_PULLEY c=20 r=1 +"Loose pulley" + +#MSG_M104_INVALID_EXTRUDER c=0 r=0 +"M104 Invalid extruder " + +#MSG_M105_INVALID_EXTRUDER c=0 r=0 +"M105 Invalid extruder " + +#MSG_M109_INVALID_EXTRUDER c=0 r=0 +"M109 Invalid extruder " + +#MSG_M117_V2_CALIBRATION c=25 r=1 +"M117 First layer cal." + +#MSG_M200_INVALID_EXTRUDER c=0 r=0 +"M200 Invalid extruder " + +#MSG_M218_INVALID_EXTRUDER c=0 r=0 +"M218 Invalid extruder " + +#MSG_M221_INVALID_EXTRUDER c=0 r=0 +"M221 Invalid extruder " + +#MSG_MAIN c=0 r=0 +"Main" + +#MSG_MARK_FIL c=20 r=8 +"Mark filament 100mm from extruder body. Click when done." + +#MSG_MEASURED_SKEW c=15 r=1 +"Measured skew:" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 +"Measuring reference height of calibration point" + +#MSG_MESH_BED_LEVELING c=0 r=0 +"Mesh Bed Leveling" + +#MSG_STEALTH_MODE_OFF c=0 r=0 +"Mode [Normal]" + +#MSG_SILENT_MODE_ON c=0 r=0 +"Mode [silent]" + +#MSG_STEALTH_MODE_ON c=0 r=0 +"Mode [Stealth]" + +#MSG_AUTO_MODE_ON c=0 r=0 +"Mode [auto power]" + +#MSG_SILENT_MODE_OFF c=0 r=0 +"Mode [high power]" + +#MSG_SELFTEST_MOTOR c=0 r=0 +"Motor" + +#MSG_MOVE_AXIS c=0 r=0 +"Move axis" + +#MSG_MOVE_X c=0 r=0 +"Move X" + +#MSG_MOVE_Y c=0 r=0 +"Move Y" + +#MSG_MOVE_Z c=0 r=0 +"Move Z" + +#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 +"New firmware version available:" + +#MSG_ERR_NO_CHECKSUM c=0 r=0 +"No Checksum with line number, Last Line: " + +#MSG_NO_MOVE c=0 r=0 +"No move." + +#MSG_NO_CARD c=0 r=0 +"No SD card" + +#MSG_ERR_NO_THERMISTORS c=0 r=0 +"No thermistors - no temperature" + +#MSG_NO c=0 r=0 +"No" + +#MSG_SELFTEST_NOTCONNECTED c=0 r=0 +"Not connected" + +#MSG_SELFTEST_FAN_NO c=19 r=0 +"Not spinning" + +#MSG_WIZARD_V2_CAL c=20 r=8 +"Now I will calibrate distance between tip of the nozzle and heatbed surface." + +#MSG_WIZARD_WILL_PREHEAT c=20 r=4 +"Now I will preheat nozzle for PLA." + +#MSG_INFO_NOZZLE_FAN c=11 r=1 +"Nozzle FAN:" + +#MSG_NOZZLE c=0 r=0 +"Nozzle" + +#MSG_NOZZLE1 c=0 r=0 +"Nozzle2" + +#MSG_NOZZLE2 c=0 r=0 +"Nozzle3" + +#MSG_OK c=0 r=0 +"ok" + +#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 +"Old settings found. Default PID, Esteps etc. will be set." + +#MSG_SD_OPEN_FILE_FAIL c=0 r=0 +"open failed, File: " + +#MSG_ENDSTOP_OPEN c=0 r=0 +"open" + +#MSG_SD_OPENROOT_FAIL c=0 r=0 +"openRoot failed" + +#MSG_PAUSE_PRINT c=0 r=0 +"Pause print" + +#MSG_PICK_Z c=0 r=0 +"Pick print" + +#MSG_PID_RUNNING c=20 r=1 +"PID cal. " + +#MSG_PID_FINISHED c=20 r=1 +"PID cal. finished" + +#MSG_PID_EXTRUDER c=17 r=1 +"PID calibration" + +#MSG_PINDA_PREHEAT c=20 r=1 +"PINDA Heating" + +#MSG_PAPER c=20 r=8 +"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." + +#MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +"Please clean heatbed and then press the knob." + +#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +"Please clean the nozzle for calibration. Click when done." + +#MSG_SELFTEST_PLEASECHECK c=0 r=0 +"Please check :" +#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." + +#MSG_WIZARD_LOAD_FILAMENT c=20 r=8 +"Please insert PLA filament to the extruder, then press knob to load it." + +#MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 +"Please load PLA filament and then resume Wizard by rebooting the printer." + +#MSG_PLEASE_LOAD_PLA c=20 r=4 +"Please load PLA filament first." + +#MSG_CHECK_IDLER c=20 r=4 +"Please open idler and remove filament manually." + +#MSG_PLACE_STEEL_SHEET c=20 r=4 +"Please place steel sheet on heatbed." + +#MSG_PRESS_TO_UNLOAD c=20 r=4 +"Please press the knob to unload filament" + +#MSG_PULL_OUT_FILAMENT c=20 r=4 +"Please pull out filament immediately" + +#MSG_REMOVE_STEEL_SHEET c=20 r=4 +"Please remove steel sheet from heatbed." + +#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 +"Please upgrade." + +#MSG_PLEASE_WAIT c=20 r=0 +"Please wait" + +#MSG_POWERUP c=0 r=0 +"PowerUp" + +#MSG_PREHEAT_NOZZLE c=20 r=0 +"Preheat the nozzle!" + +#MSG_PREHEAT c=0 r=0 +"Preheat" + +#MSG_WIZARD_HEATING c=20 r=3 +"Preheating nozzle. Please wait." + +#MSG_PREPARE_FILAMENT c=20 r=1 +"Prepare new filament" + +#MSG_PRESS_TO_PREHEAT c=20 r=4 +"Press knob to preheat nozzle and continue." + +#MSG_PRINT_ABORTED c=20 r=0 +"Print aborted" + +#MSG_INFO_PRINT_FAN c=11 r=1 +"Print FAN: " + +#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 +"Print fan:" + +#MSG_CARD_MENU c=0 r=0 +"Print from SD" + +#MSG_PRINT_PAUSED c=20 r=1 +"Print paused" + +#MSG_STATS_PRINTTIME c=20 r=0 +"Print time: " + +#MSG_PRINTER_DISCONNECTED c=20 r=1 +"Printer disconnected" + +#MSG_ERR_KILLED c=0 r=0 +"Printer halted. kill() called!" + +#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." + +#MSG_ERR_STOPPED c=0 r=0 +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" + +#WELCOME_MSG c=20 r=0 +"Prusa i3 MK3 ready." + +#MSG_PRUSA3D c=0 r=0 +"prusa3d.com" + +#MSG_BED_CORRECTION_REAR c=14 r=1 +"Rear side [um]" + +#MSG_RECOVERING_PRINT c=20 r=1 +"Recovering print " + +#MSG_M119_REPORT c=0 r=0 +"Reporting endstop status" + +#MSG_RESEND c=0 r=0 +"Resend: " + +#MSG_CALIBRATE_BED_RESET c=0 r=0 +"Reset XYZ calibr." + +#MSG_BED_CORRECTION_RESET c=0 r=0 +"Reset" + +#MSG_RESUME_PRINT c=0 r=0 +"Resume print" + +#MSG_RESUMING c=0 r=0 +"Resuming print" + +#MSG_RESUMING_PRINT c=20 r=1 +"Resuming print" + +#MSG_BED_CORRECTION_RIGHT c=14 r=1 +"Right side[um]" + +#MSG_RIGHT c=12 r=1 +"Right:" + +#MSG_E_CAL_KNOB c=20 r=8 +"Rotate knob until mark reaches extruder body. Click when done." + +#MSG_SECOND_SERIAL_ON c=17 r=1 +"RPi port [on]" + +#MSG_SECOND_SERIAL_OFF c=17 r=1 +"RPi port [off]" + +#MSG_WIZARD_RERUN c=20 r=7 +"Running Wizard will delete current calibration results and start from the beginning. Continue?" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 +"SD card [normal]" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 +"SD card [FlshAir]" + +#MSG_SD_CARD_OK c=0 r=0 +"SD card ok" + +#MSG_SD_INIT_FAIL c=0 r=0 +"SD init fail" + +#MSG_SD_PRINTING_BYTE c=0 r=0 +"SD printing byte " + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Searching bed calibration point" + +#MSG_LANGUAGE_SELECT c=0 r=0 +"Select language" + +#MSG_SELFTEST_OK c=0 r=0 +"Self test OK" + +#MSG_SELFTEST_START c=20 r=0 +"Self test start " + +#MSG_SELFTEST c=0 r=0 +"Selftest " + +#MSG_SELFTEST_ERROR c=0 r=0 +"Selftest error !" + +#MSG_SELFTEST_FAILED c=20 r=0 +"Selftest failed " + +#MSG_FORCE_SELFTEST c=20 r=8 +"Selftest will be run to calibrate accurate sensorless rehoming." + +#MSG_SET_TEMPERATURE c=19 r=1 +"Set temperature:" + +#MSG_SETTINGS c=0 r=0 +"Settings" + +#MSG_SEVERE_SKEW c=15 r=1 +"Severe skew:" + +#MSG_SHOW_END_STOPS c=17 r=1 +"Show end stops" + +#MSG_DWELL c=0 r=0 +"Sleep..." + +#MSG_SLIGHT_SKEW c=15 r=1 +"Slight skew:" + +#MSG_FILE_CNT c=20 r=4 +"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." + +#MSG_SORT_NONE c=17 r=1 +"Sort: [None]" + +#MSG_SORT_TIME c=17 r=1 +"Sort: [Time]" + +#MSG_SORT_ALPHA c=17 r=1 +"Sort: [Alphabet]" + +#MSG_SORTING c=20 r=1 +"Sorting files" + +#MSG_SPEED c=0 r=0 +"Speed" + +#MSG_SELFTEST_FAN_YES c=19 r=0 +"Spinning" + +#MSG_TEMP_CAL_WARNING c=20 r=4 +"Stable ambient temperature 21-26C is needed a rigid stand is required." + +#MSG_STATISTICS c=0 r=0 +"Statistics " + +#MSG_STEPPER_TOO_HIGH c=0 r=0 +"Steprate too high: " + +#MSG_STOP_PRINT c=0 r=0 +"Stop print" + +#MSG_STOPPED c=0 r=0 +"STOPPED. " + +#MSG_SUPPORT c=0 r=0 +"Support" + +#MSG_SELFTEST_SWAPPED c=0 r=0 +"Swapped" + +#MSG_TEMP_CALIBRATION c=20 r=1 +"Temp. cal. " + +#MSG_TEMP_CALIBRATION_ON c=20 r=1 +"Temp. cal. [on]" + +#MSG_TEMP_CALIBRATION_OFF c=20 r=1 +"Temp. cal. [off]" + +#MSG_CALIBRATION_PINDA_MENU c=17 r=1 +"Temp. calibration" + +#MSG_TEMP_CAL_FAILED c=20 r=8 +"Temperature calibration failed" + +#MSG_PINDA_NOT_CALIBRATED c=20 r=4 +"Temperature calibration has not been run yet" + +#MSG_TEMP_CALIBRATION_DONE c=20 r=12 +"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." + +#MSG_TEMPERATURE c=0 r=0 +"Temperature" + +#MSG_MENU_TEMPERATURES c=15 r=1 +"Temperatures" + +#MSG_STATS_TOTALFILAMENT c=20 r=0 +"Total filament :" + +#MSG_STATS_TOTALPRINTTIME c=20 r=0 +"Total print time :" + +#MSG_ENDSTOP_HIT c=0 r=0 +"TRIGGERED" + +#MSG_TUNE c=0 r=0 +"Tune" + +#MSG_UNLOAD_ALL c=0 r=0 +"Unload all" + +#MSG_UNLOAD_FILAMENT_1 c=17 r=0 +"Unload filament 1" + +#MSG_UNLOAD_FILAMENT_2 c=17 r=0 +"Unload filament 2" + +#MSG_UNLOAD_FILAMENT_3 c=17 r=0 +"Unload filament 3" + +#MSG_UNLOAD_FILAMENT_4 c=17 r=0 +"Unload filament 4" + +#MSG_UNLOAD_FILAMENT c=17 r=0 +"Unload filament" + +#MSG_UNLOADING_FILAMENT c=20 r=1 +"Unloading filament" + +#MSG_USED c=19 r=1 +"Used during print" + +#MSG_MENU_VOLTAGES c=15 r=1 +"Voltages" + +#MSG_SD_VOL_INIT_FAIL c=0 r=0 +"volume.init failed" + +#MSG_USERWAIT c=0 r=0 +"Wait for user..." + +#MSG_WAITING_TEMP c=20 r=3 +"Waiting for nozzle and bed cooling" + +#MSG_WAITING_TEMP_PINDA c=20 r=3 +"Waiting for PINDA probe cooling" + +#MSG_CHANGED_BOTH c=20 r=4 +"Warning: both printer type and motherboard type changed." + +#MSG_CHANGED_MOTHERBOARD c=20 r=4 +"Warning: motherboard type changed." + +#MSG_CHANGED_PRINTER c=20 r=4 +"Warning: printer type changed." + +#MSG_FW_VERSION_UNKNOWN c=20 r=8 +"WARNING: This is an unofficial, unsupported build. Use at your own risk!" + +#MSG_UNLOAD_SUCCESSFUL c=20 r=2 +"Was filament unload successful?" + +#MSG_SELFTEST_WIRINGERROR c=0 r=0 +"Wiring error" + +#MSG_WIZARD c=17 r=1 +"Wizard" + +#MSG_SD_WORKDIR_FAIL c=0 r=0 +"workDir open failed" + +#MSG_SD_WRITE_TO_FILE c=0 r=0 +"Writing to file: " + +#MSG_XYZ_DETAILS c=19 r=1 +"XYZ cal. details" + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +"XYZ calibration all right. Skew will be corrected automatically." + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +"XYZ calibration all right. X/Y axes are slightly skewed. Good job!" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration compromised. Front calibration points not reachable." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration compromised. Left front calibration point not reachable." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration compromised. Right front calibration point not reachable." + +#MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 +"XYZ calibration failed. Bed calibration point was not found." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration failed. Front calibration points not reachable." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration failed. Left front calibration point not reachable." + +#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +"XYZ calibration failed. Please consult the manual." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration failed. Right front calibration point not reachable." + +#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" + +#MSG_Y_DISTANCE_FROM_MIN c=20 r=1 +"Y distance from min:" + +#MSG_YES c=0 r=0 +"Yes" + +#MSG_FW_VERSION_ALPHA c=20 r=8 +"You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." + +#MSG_FW_VERSION_BETA c=20 r=8 +"You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." + +#MSG_WIZARD_QUIT c=20 r=8 +"You can always resume the Wizard from Calibration -> Wizard." + diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt new file mode 100644 index 00000000..f7d8989d --- /dev/null +++ b/lang/lang_en_cz.txt @@ -0,0 +1,1372 @@ +#MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 +" [off" +"\x00" + +#MSG_PLANNER_BUFFER_BYTES c=0 r=0 +" PlannerBufferBytes: " +" PlannerBufferBytes: " + +#MSG_FACTOR c=0 r=0 +" \002 Fact" +" \002 Fact" + +#MSG_MAX c=0 r=0 +" \002 Max" +" \002 Max" + +#MSG_MIN c=0 r=0 +" \002 Min" +" \002 Min" + +#MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 +" cold extrusion prevented" +" cold extrusion prevented" + +#MSG_FREE_MEMORY c=0 r=0 +" Free Memory: " +" Free Memory: " + +#MSG_CONFIGURATION_VER c=0 r=0 +" Last Updated: " +" Last Updated: " + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" z 4" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" z 4" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 +" of 9" +" z 9" + +#MSG_MEASURED_OFFSET c=0 r=0 +"[0;0] point offset" +"\x00" + +#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +"\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu" + +#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +"\x1b[2JPOZOR:\x1b[1;0HCrash detekce\x1b[2;0Hdeaktivovana ve\x1b[3;0HStealth modu" + +#MSG_REFRESH c=0 r=0 +"\xf8Refresh" +"\xf8Obnovit" + +#MSG_BABYSTEPPING_Z c=20 r=0 +"Adjusting Z" +"Dostavovani Z" + +#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 +"All correct " +"Vse OK " + +#MSG_WIZARD_DONE c=20 r=8 +"All is done. Happy printing!" +"Vse je hotovo." + +#MSG_ALL c=19 r=1 +"All" +"Vse" + +#MSG_PRESS c=20 r=0 +"and press the knob" +"a stisknete tlacitko" + +#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +"Are left and right Z~carriages all up?" +"Dojely oba Z voziky k~hornimu dorazu?" + +#MSG_ADJUSTZ c=0 r=0 +"Auto adjust Z?" +"Auto doladit Z ?" + +#MSG_AUTO_HOME c=0 r=0 +"Auto home" +"Auto home" + +#MSG_AUTOLOAD_FILAMENT c=17 r=0 +"AutoLoad filament" +"AutoZavedeni fil." + +#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +"Autoloading filament available only when filament sensor is turned on..." +"Automaticke zavadeni filamentu dostupne pouze pri zapnutem filament senzoru..." + +#MSG_AUTOLOADING_ENABLED c=20 r=4 +"Autoloading filament is active, just press the knob and insert filament..." +"Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..." + +#MSG_SELFTEST_AXIS_LENGTH c=0 r=0 +"Axis length" +"Delka osy" + +#MSG_SELFTEST_AXIS c=0 r=0 +"Axis" +"Osa" + +#MSG_BABYSTEPPING_X c=0 r=0 +"Babystepping X" +"Babystepping X" + +#MSG_BABYSTEPPING_Y c=0 r=0 +"Babystepping Y" +"Babystepping Y" + +#MSG_SELFTEST_BEDHEATER c=0 r=0 +"Bed / Heater" +"Bed / Heater" + +#MSG_BED_DONE c=0 r=0 +"Bed done" +"Bed OK." + +#MSG_BED_HEATING c=0 r=0 +"Bed Heating" +"Zahrivani bed" + +#MSG_BED_CORRECTION_MENU c=0 r=0 +"Bed level correct" +"Korekce podlozky" + +#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 +"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +"Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset." + +#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 +"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +"Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset." + +#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 +"Bed leveling failed. Sensor triggered too high. Waiting for reset." +"Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset." + +#MSG_BED c=0 r=0 +"Bed" +"Bed" + +#MSG_BEGIN_FILE_LIST c=0 r=0 +"Begin file list" +"Begin file list" + +#MSG_MENU_BELT_STATUS c=15 r=1 +"Belt status" +"Stav remenu" + +#MSG_RECOVER_PRINT c=20 r=2 +"Blackout occurred. Recover print?" +"Detekovan vypadek proudu.Obnovit tisk?" + +#MSG_CALIBRATE_E c=20 r=1 +"Calibrate E" +"Kalibrovat E" + +#MSG_CALIBRATE_BED c=0 r=0 +"Calibrate XYZ" +"Kalibrace XYZ" + +#MSG_HOMEYZ c=0 r=0 +"Calibrate Z" +"Kalibrovat Z" + +#MSG_CALIBRATE_PINDA c=17 r=1 +"Calibrate" +"Zkalibrovat" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem." + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Kalibruji Z" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Kalibruji Z" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem." + +#MSG_HOMEYZ_DONE c=0 r=0 +"Calibration done" +"Kalibrace OK" + +#MSG_MENU_CALIBRATION c=0 r=0 +"Calibration" +"Kalibrace" + +#MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 +"Cannot enter subdir: " +"Cannot enter subdir: " + +#MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 +"Cannot open subdir" +"Cannot open subdir" + +#MSG_SD_INSERTED c=0 r=0 +"Card inserted" +"Karta vlozena" + +#MSG_SD_REMOVED c=0 r=0 +"Card removed" +"Karta vyjmuta" + +#MSG_NOT_COLOR c=0 r=0 +"Color not correct" +"Barva neni cista" + +#MSG_COOLDOWN c=0 r=0 +"Cooldown" +"Zchladit" + +#MSG_CRASHDETECT_ON c=0 r=0 +"Crash det. [on]" +"Crash det. [zap]" + +#MSG_CRASHDETECT_NA c=0 r=0 +"Crash det. [N/A]" +"Crash det. [N/A]" + +#MSG_CRASHDETECT_OFF c=0 r=0 +"Crash det. [off]" +"Crash det. [vyp]" + +#MSG_CRASH_DETECTED c=20 r=1 +"Crash detected." +"Detekovan naraz." + +#MSG_CURRENT c=19 r=1 +"Current" +"Pouze aktualni" + +#MSG_DATE c=17 r=1 +"Date:" +"Datum:" + +#MSG_DISABLE_STEPPERS c=0 r=0 +"Disable steppers" +"Vypnout motory" + +#MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +"Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy." + +#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +"Do you want to repeat last step to readjust distance between nozzle and heatbed?" +"Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a heatbed?" + +#MSG_CLEAN_NOZZLE_E c=20 r=8 +"E calibration finished. Please clean the nozzle. Click when done." +"E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem." + +#MSG_EXTRUDER_CORRECTION c=9 r=0 +"E-correct" +"\x00" + +#MSG_END_FILE_LIST c=0 r=0 +"End file list" +"End file list" + +#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 +"Endstop not hit" +"Endstop not hit" + +#MSG_SELFTEST_ENDSTOP c=0 r=0 +"Endstop" +"Endstop" + +#MSG_ENDSTOPS_HIT c=0 r=0 +"endstops hit: " +"endstops hit: " + +#MSG_SELFTEST_ENDSTOPS c=0 r=0 +"Endstops" +"Endstops" + +#MSG_Enqueing c=0 r=0 +"enqueing \x22" +"enqueing \x22" + +#MSG_STACK_ERROR c=20 r=4 +"Error - static memory has been overwritten" +"Chyba - Doslo k prepisu staticke pameti!" + +#MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 +"error writing to file" +"error writing to file" + +#MSG_FSENS_NOT_RESPONDING c=20 r=4 +"ERROR: Filament sensor is not responding, please check connection." +"CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni." + +#MSG_ERROR c=0 r=0 +"ERROR:" +"CHYBA:" + +#MSG_EXTRUDER_1 c=17 r=1 +"Extruder 1" +"Extruder 1" + +#MSG_EXTRUDER_2 c=17 r=1 +"Extruder 2" +"Extruder 2" + +#MSG_EXTRUDER_3 c=17 r=1 +"Extruder 3" +"Extruder 3" + +#MSG_EXTRUDER_4 c=17 r=1 +"Extruder 4" +"Extruder 4" + +#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 +"Extruder fan:" +"Levy vent.:" + +#MSG_INFO_EXTRUDER c=15 r=1 +"Extruder info" +"Extruder info" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Extruder" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Extruder" + +#MSG_FSENS_AUTOLOAD_ON c=17 r=1 +"F. autoload [on]" +"F. autozav. [zap]" + +#MSG_FSENS_AUTOLOAD_NA c=17 r=1 +"F. autoload [N/A]" +"F. autozav. [N/A]" + +#MSG_FSENS_AUTOLOAD_OFF c=17 r=1 +"F. autoload [off]" +"F. autozav. [vyp]" + +#MSG_FAN_SPEED c=14 r=0 +"Fan speed" +"Rychlost vent." + +#MSG_SELFTEST_FAN c=20 r=0 +"Fan test" +"Test ventilatoru" + +#MSG_FANS_CHECK_ON c=17 r=1 +"Fans check [on]" +"Kontr. vent.[zap]" + +#MSG_FANS_CHECK_OFF c=17 r=1 +"Fans check [off]" +"Kontr. vent.[vyp]" + +#MSG_FSENSOR_ON c=0 r=0 +"Fil. sensor [on]" +"Fil. senzor [zap]" + +#MSG_FSENSOR_NA c=0 r=0 +"Fil. sensor [N/A]" +"Fil. senzor [N/A]" + +#MSG_FSENSOR_OFF c=0 r=0 +"Fil. sensor [off]" +"Fil. senzor [vyp]" + +#MSG_FILAMENT_CLEAN c=20 r=2 +"Filament extruding & with correct color?" +"Filament vytlacen a spravne barvy?" + +#MSG_NOT_LOADED c=19 r=0 +"Filament not loaded" +"Filament nezaveden" + +#MSG_FILAMENT_SENSOR c=20 r=0 +"Filament sensor" +"Senzor filamentu" + +#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 +"Filament sensor:" +"Senzor filamentu:" + +#MSG_STATS_FILAMENTUSED c=20 r=0 +"Filament used: " +"Filament : " + +#MSG_FILE_INCOMPLETE c=20 r=2 +"File incomplete. Continue anyway?" +"Soubor nekompletni. Pokracovat?" + +#MSG_SD_FILE_OPENED c=0 r=0 +"File opened: " +"File opened: " + +#MSG_SD_FILE_SELECTED c=0 r=0 +"File selected" +"File selected" + +#MSG_FINISHING_MOVEMENTS c=20 r=1 +"Finishing movements" +"Dokoncovani pohybu" + +#MSG_V2_CALIBRATION c=17 r=1 +"First layer cal." +"Kal. prvni vrstvy" + +#MSG_WIZARD_SELFTEST c=20 r=8 +"First, I will run the selftest to check most common assembly problems." +"Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny." + +#MSG_FLOW c=0 r=0 +"Flow" +"Prutok" + +#MSG_PRUSA3D_FORUM c=0 r=0 +"forum.prusa3d.com" +"\x00" + +#MSG_SELFTEST_COOLING_FAN c=20 r=0 +"Front print fan?" +"Predni tiskovy vent?" + +#MSG_BED_CORRECTION_FRONT c=14 r=1 +"Front side[um]" +"Vpredu [um]" + +#MSG_SELFTEST_FANS c=0 r=0 +"Front/left fans" +"Predni/levy vent." + +#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 +"Heater/Thermistor" +"Heater/Thermistor" + +#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 +"Heating disabled by safety timer." +"Zahrivani preruseno bezpecnostnim casovacem." + +#MSG_HEATING_COMPLETE c=20 r=0 +"Heating done." +"Zahrivani OK." + +#MSG_HEATING c=0 r=0 +"Heating" +"Zahrivani" + +#MSG_WIZARD_WELCOME c=20 r=7 +"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +"Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?" + +#MSG_PRUSA3D_HOWTO c=0 r=0 +"howto.prusa3d.com" +"\x00" + +#MSG_CHANGE_EXTR c=20 r=1 +"Change extruder" +"Zmenit extruder" + +#MSG_FILAMENTCHANGE c=0 r=0 +"Change filament" +"Vymenit filament" + +#MSG_CNG_SDCARD c=0 r=0 +"Change SD card" +"Vymenit SD" + +#MSG_CHANGE_SUCCESS c=0 r=0 +"Change success!" +"Zmena uspesna!" + +#MSG_CORRECTLY c=20 r=0 +"Changed correctly?" +"Vymena ok?" + +#MSG_CHANGING_FILAMENT c=20 r=0 +"Changing filament!" +"Vymena filamentu!" + +#MSG_SELFTEST_CHECK_BED c=20 r=0 +"Checking bed " +"Kontrola bed " + +#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 +"Checking endstops" +"Kontrola endstops" + +#MSG_SELFTEST_CHECK_HOTEND c=20 r=0 +"Checking hotend " +"Kontrola hotend " + +#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 +"Checking sensors " +"Kontrola senzoru" + +#MSG_SELFTEST_CHECK_X c=20 r=0 +"Checking X axis " +"Kontrola X axis " + +#MSG_SELFTEST_CHECK_Y c=20 r=0 +"Checking Y axis " +"Kontrola Y axis " + +#MSG_SELFTEST_CHECK_Z c=20 r=0 +"Checking Z axis " +"Kontrola Z axis " + +#MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 +"checksum mismatch, Last Line: " +"checksum mismatch, Last Line: " + +#MSG_CHOOSE_EXTRUDER c=20 r=1 +"Choose extruder:" +"Vyberte extruder:" + +#MSG_WIZARD_XYZ_CAL c=20 r=8 +"I will run xyz calibration now. It will take approx. 12 mins." +"Nyni provedu xyz kalibraci. Zabere to priblizne 12 min." + +#MSG_WIZARD_Z_CAL c=20 r=8 +"I will run z calibration now." +"Nyni provedu z kalibraci." + +#MSG_WIZARD_V2_CAL_2 c=20 r=12 +"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +"Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Improving bed calibration point" +"Zlepsuji presnost kalibracniho bodu" + +#MSG_WATCH c=0 r=0 +"Info screen" +"Informace" + +#MSG_INIT_SDCARD c=0 r=0 +"Init. SD card" +"Inic. SD" + +#MSG_FILAMENT_LOADING_T0 c=20 r=4 +"Insert filament into extruder 1. Click when done." +"Vlozte filament do extruderu 1. Potvrdte tlacitkem." + +#MSG_FILAMENT_LOADING_T1 c=20 r=4 +"Insert filament into extruder 2. Click when done." +"Vlozte filament do extruderu 2. Potvrdte tlacitkem." + +#MSG_FILAMENT_LOADING_T2 c=20 r=4 +"Insert filament into extruder 3. Click when done." +"Vlozte filament do extruderu 3. Potvrdte tlacitkem." + +#MSG_FILAMENT_LOADING_T3 c=20 r=4 +"Insert filament into extruder 4. Click when done." +"Vlozte filament do extruderu 4. Potvrdte tlacitkem." + +#MSG_INSERT_FILAMENT c=20 r=0 +"Insert filament" +"Vlozte filament" + +#MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +"Is filament loaded?" +"Je filament zaveden?" + +#MSG_WIZARD_PLA_FILAMENT c=20 r=2 +"Is it PLA filament?" +"Je to PLA filament?" + +#MSG_PLA_FILAMENT_LOADED c=20 r=2 +"Is PLA filament loaded?" +"Je PLA filament zaveden?" + +#MSG_STEEL_SHEET_CHECK c=20 r=2 +"Is steel sheet on heatbed?" +"Je tiskovy plat na heatbed?" + +#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 +"Iteration " +"Iterace " + +#MSG_KILLED c=0 r=0 +"KILLED. " +"KILLED. " + +#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 +"Left hotend fan?" +"Levy vent na trysce?" + +#MSG_BED_CORRECTION_LEFT c=14 r=1 +"Left side [um]" +"Vlevo [um]" + +#MSG_LEFT c=12 r=1 +"Left:" +"Levy:" + +#MSG_BABYSTEP_Z c=0 r=0 +"Live adjust Z" +"Doladeni osy Z" + +#MSG_LOAD_ALL c=0 r=0 +"Load all" +"Zavest vse" + +#MSG_LOAD_FILAMENT_1 c=17 r=0 +"Load filament 1" +"Zavest filament 1" + +#MSG_LOAD_FILAMENT_2 c=17 r=0 +"Load filament 2" +"Zavest filament 2" + +#MSG_LOAD_FILAMENT_3 c=17 r=0 +"Load filament 3" +"Zavest filament 3" + +#MSG_LOAD_FILAMENT_4 c=17 r=0 +"Load filament 4" +"Zavest filament 4" + +#MSG_LOAD_FILAMENT c=17 r=0 +"Load filament" +"Zavest filament" + +#MSG_LOADING_COLOR c=0 r=0 +"Loading color" +"Cisteni barvy" + +#MSG_LOADING_FILAMENT c=20 r=0 +"Loading filament" +"Zavadeni filamentu" + +#MSG_LOOSE_PULLEY c=20 r=1 +"Loose pulley" +"Uvolnena remenicka" + +#MSG_M104_INVALID_EXTRUDER c=0 r=0 +"M104 Invalid extruder " +"M104 Invalid extruder " + +#MSG_M105_INVALID_EXTRUDER c=0 r=0 +"M105 Invalid extruder " +"M105 Invalid extruder " + +#MSG_M109_INVALID_EXTRUDER c=0 r=0 +"M109 Invalid extruder " +"M109 Invalid extruder " + +#MSG_M117_V2_CALIBRATION c=25 r=1 +"M117 First layer cal." +"M117 Kal. prvni vrstvy" + +#MSG_M200_INVALID_EXTRUDER c=0 r=0 +"M200 Invalid extruder " +"M200 Invalid extruder " + +#MSG_M218_INVALID_EXTRUDER c=0 r=0 +"M218 Invalid extruder " +"M218 Invalid extruder " + +#MSG_M221_INVALID_EXTRUDER c=0 r=0 +"M221 Invalid extruder " +"M221 Invalid extruder " + +#MSG_MAIN c=0 r=0 +"Main" +"Hlavni nabidka" + +#MSG_MARK_FIL c=20 r=8 +"Mark filament 100mm from extruder body. Click when done." +"Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem." + +#MSG_MEASURED_SKEW c=15 r=1 +"Measured skew:" +"Merene zkoseni:" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 +"Measuring reference height of calibration point" +"Merim referencni vysku kalibracniho bodu" + +#MSG_MESH_BED_LEVELING c=0 r=0 +"Mesh Bed Leveling" +"Mesh Bed Leveling" + +#MSG_STEALTH_MODE_OFF c=0 r=0 +"Mode [Normal]" +"Mod [Normal]" + +#MSG_SILENT_MODE_ON c=0 r=0 +"Mode [silent]" +"Mod [tichy]" + +#MSG_STEALTH_MODE_ON c=0 r=0 +"Mode [Stealth]" +"Mod [Stealth]" + +#MSG_AUTO_MODE_ON c=0 r=0 +"Mode [auto power]" +"Mod [automaticky]" + +#MSG_SILENT_MODE_OFF c=0 r=0 +"Mode [high power]" +"Mod [vys. vykon]" + +#MSG_SELFTEST_MOTOR c=0 r=0 +"Motor" +"Motor" + +#MSG_MOVE_AXIS c=0 r=0 +"Move axis" +"Posunout osu" + +#MSG_MOVE_X c=0 r=0 +"Move X" +"Posunout X" + +#MSG_MOVE_Y c=0 r=0 +"Move Y" +"Posunout Y" + +#MSG_MOVE_Z c=0 r=0 +"Move Z" +"Posunout Z" + +#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 +"New firmware version available:" +"Vysla nova verze firmware:" + +#MSG_ERR_NO_CHECKSUM c=0 r=0 +"No Checksum with line number, Last Line: " +"No Checksum with line number, Last Line: " + +#MSG_NO_MOVE c=0 r=0 +"No move." +"No move." + +#MSG_NO_CARD c=0 r=0 +"No SD card" +"Zadna SD karta" + +#MSG_ERR_NO_THERMISTORS c=0 r=0 +"No thermistors - no temperature" +"No thermistors - no temperature" + +#MSG_NO c=0 r=0 +"No" +"Ne" + +#MSG_SELFTEST_NOTCONNECTED c=0 r=0 +"Not connected" +"Nezapojeno " + +#MSG_SELFTEST_FAN_NO c=19 r=0 +"Not spinning" +"Netoci se" + +#MSG_WIZARD_V2_CAL c=20 r=8 +"Now I will calibrate distance between tip of the nozzle and heatbed surface." +"Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem heatbedu." + +#MSG_WIZARD_WILL_PREHEAT c=20 r=4 +"Now I will preheat nozzle for PLA." +"Nyni predehreji trysku pro PLA." + +#MSG_INFO_NOZZLE_FAN c=11 r=1 +"Nozzle FAN:" +"Trysk. vent:" + +#MSG_NOZZLE c=0 r=0 +"Nozzle" +"Tryska" + +#MSG_NOZZLE1 c=0 r=0 +"Nozzle2" +"Tryska2" + +#MSG_NOZZLE2 c=0 r=0 +"Nozzle3" +"Tryska3" + +#MSG_OK c=0 r=0 +"ok" +"ok" + +#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 +"Old settings found. Default PID, Esteps etc. will be set." +"Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd." + +#MSG_SD_OPEN_FILE_FAIL c=0 r=0 +"open failed, File: " +"open failed, File: " + +#MSG_ENDSTOP_OPEN c=0 r=0 +"open" +"open" + +#MSG_SD_OPENROOT_FAIL c=0 r=0 +"openRoot failed" +"openRoot failed" + +#MSG_PAUSE_PRINT c=0 r=0 +"Pause print" +"Pozastavit tisk" + +#MSG_PICK_Z c=0 r=0 +"Pick print" +"Vyberte vytisk" + +#MSG_PID_RUNNING c=20 r=1 +"PID cal. " +"PID kal. " + +#MSG_PID_FINISHED c=20 r=1 +"PID cal. finished" +"PID kal. ukoncena" + +#MSG_PID_EXTRUDER c=17 r=1 +"PID calibration" +"PID kalibrace" + +#MSG_PINDA_PREHEAT c=20 r=1 +"PINDA Heating" +"Nahrivani PINDA" + +#MSG_PAPER c=20 r=8 +"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +"Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu." + +#MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +"Please clean heatbed and then press the knob." +"Prosim ocistete heatbed a stisknete tlacitko." + +#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +"Please clean the nozzle for calibration. Click when done." +"Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem." + +#MSG_SELFTEST_PLEASECHECK c=0 r=0 +"Please check :" +"Zkontrolujte :" + +#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +"Prosim nahlednete do manualu a opravte problem. Po te obnovte Wizarda rebootovanim tiskarny." + +#MSG_WIZARD_LOAD_FILAMENT c=20 r=8 +"Please insert PLA filament to the extruder, then press knob to load it." +"Prosim vlozte PLA filament do extruderu, po te stisknete tlacitko pro zavedeni filamentu." + +#MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 +"Please load PLA filament and then resume Wizard by rebooting the printer." +"Prosim zavedte PLA filament a po te obnovte Wizarda stisknutim reset tlacitka." + +#MSG_PLEASE_LOAD_PLA c=20 r=4 +"Please load PLA filament first." +"Nejdrive zavedte PLA filament prosim." + +#MSG_CHECK_IDLER c=20 r=4 +"Please open idler and remove filament manually." +"Prosim otevrete idler a manualne odstrante filament." + +#MSG_PLACE_STEEL_SHEET c=20 r=4 +"Please place steel sheet on heatbed." +"Umistete prosim tiskovy plat na heatbed" + +#MSG_PRESS_TO_UNLOAD c=20 r=4 +"Please press the knob to unload filament" +"Pro vysunuti filamentu stisknete prosim tlacitko" + +#MSG_PULL_OUT_FILAMENT c=20 r=4 +"Please pull out filament immediately" +"Prosim vyjmete urychlene filament" + +#MSG_REMOVE_STEEL_SHEET c=20 r=4 +"Please remove steel sheet from heatbed." +"Odstrante tiskovy plat z heatbed prosim." + +#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 +"Please upgrade." +"Prosim aktualizujte." + +#MSG_PLEASE_WAIT c=20 r=0 +"Please wait" +"Prosim cekejte" + +#MSG_POWERUP c=0 r=0 +"PowerUp" +"PowerUp" + +#MSG_PREHEAT_NOZZLE c=20 r=0 +"Preheat the nozzle!" +"Predehrejte trysku!" + +#MSG_PREHEAT c=0 r=0 +"Preheat" +"Predehrev" + +#MSG_WIZARD_HEATING c=20 r=3 +"Preheating nozzle. Please wait." +"Predehrivam trysku. Prosim cekejte." + +#MSG_PREPARE_FILAMENT c=20 r=1 +"Prepare new filament" +"Pripravte filament" + +#MSG_PRESS_TO_PREHEAT c=20 r=4 +"Press knob to preheat nozzle and continue." +"Pro nahrati trysky a pokracovani stisknete tlacitko." + +#MSG_PRINT_ABORTED c=20 r=0 +"Print aborted" +"Tisk prerusen" + +#MSG_INFO_PRINT_FAN c=11 r=1 +"Print FAN: " +"Tisk. vent:" + +#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 +"Print fan:" +"Tiskovy vent.:" + +#MSG_CARD_MENU c=0 r=0 +"Print from SD" +"Tisk z SD" + +#MSG_PRINT_PAUSED c=20 r=1 +"Print paused" +"Tisk pozastaven" + +#MSG_STATS_PRINTTIME c=20 r=0 +"Print time: " +"Cas tisku : " + +#MSG_PRINTER_DISCONNECTED c=20 r=1 +"Printer disconnected" +"\x00" + +#MSG_ERR_KILLED c=0 r=0 +"Printer halted. kill() called!" +"Printer halted. kill() called!" + +#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +"Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace." + +#MSG_ERR_STOPPED c=0 r=0 +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" + +#WELCOME_MSG c=20 r=0 +"Prusa i3 MK3 ready." +"Prusa i3 MK3 ok" + +#MSG_PRUSA3D c=0 r=0 +"prusa3d.com" +"\x00" + +#MSG_BED_CORRECTION_REAR c=14 r=1 +"Rear side [um]" +"Vzadu [um]" + +#MSG_RECOVERING_PRINT c=20 r=1 +"Recovering print " +"Obnovovani tisku " + +#MSG_M119_REPORT c=0 r=0 +"Reporting endstop status" +"Reporting endstop status" + +#MSG_RESEND c=0 r=0 +"Resend: " +"Resend: " + +#MSG_CALIBRATE_BED_RESET c=0 r=0 +"Reset XYZ calibr." +"Reset XYZ kalibr." + +#MSG_BED_CORRECTION_RESET c=0 r=0 +"Reset" +"Reset" + +#MSG_RESUME_PRINT c=0 r=0 +"Resume print" +"Pokracovat" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Obnoveni tisku" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Obnoveni tisku" + +#MSG_BED_CORRECTION_RIGHT c=14 r=1 +"Right side[um]" +"Vpravo [um]" + +#MSG_RIGHT c=12 r=1 +"Right:" +"Pravy:" + +#MSG_E_CAL_KNOB c=20 r=8 +"Rotate knob until mark reaches extruder body. Click when done." +"Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem." + +#MSG_SECOND_SERIAL_ON c=17 r=1 +"RPi port [on]" +"RPi port [zap]" + +#MSG_SECOND_SERIAL_OFF c=17 r=1 +"RPi port [off]" +"RPi port [vyp]" + +#MSG_WIZARD_RERUN c=20 r=7 +"Running Wizard will delete current calibration results and start from the beginning. Continue?" +"Spusteni Wizarda vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 +"SD card [normal]" +"SD card [normal]" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 +"SD card [FlshAir]" +"SD card [FlshAir]" + +#MSG_SD_CARD_OK c=0 r=0 +"SD card ok" +"SD card ok" + +#MSG_SD_INIT_FAIL c=0 r=0 +"SD init fail" +"SD init fail" + +#MSG_SD_PRINTING_BYTE c=0 r=0 +"SD printing byte " +"SD printing byte " + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Searching bed calibration point" +"Hledam kalibracni bod podlozky" + +#MSG_LANGUAGE_SELECT c=0 r=0 +"Select language" +"Vyber jazyka" + +#MSG_SELFTEST_OK c=0 r=0 +"Self test OK" +"Self test OK" + +#MSG_SELFTEST_START c=20 r=0 +"Self test start " +"Self test start " + +#MSG_SELFTEST c=0 r=0 +"Selftest " +"Selftest " + +#MSG_SELFTEST_ERROR c=0 r=0 +"Selftest error !" +"Selftest error !" + +#MSG_SELFTEST_FAILED c=20 r=0 +"Selftest failed " +"Selftest selhal " + +#MSG_FORCE_SELFTEST c=20 r=8 +"Selftest will be run to calibrate accurate sensorless rehoming." +"Pro kalibraci presneho rehomovani bude nyni spusten selftest." + +#MSG_SET_TEMPERATURE c=19 r=1 +"Set temperature:" +"Nastavte teplotu:" + +#MSG_SETTINGS c=0 r=0 +"Settings" +"Nastaveni" + +#MSG_SEVERE_SKEW c=15 r=1 +"Severe skew:" +"Tezke zkoseni:" + +#MSG_SHOW_END_STOPS c=17 r=1 +"Show end stops" +"Stav konc. spin." + +#MSG_DWELL c=0 r=0 +"Sleep..." +"Sleep..." + +#MSG_SLIGHT_SKEW c=15 r=1 +"Slight skew:" +"Lehke zkoseni:" + +#MSG_FILE_CNT c=20 r=4 +"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +"Nektere soubory nebudou setrideny. Maximalni pocet souboru pro setrideni je 100." + +#MSG_SORT_NONE c=17 r=1 +"Sort: [None]" +"Trideni [Zadne]" + +#MSG_SORT_TIME c=17 r=1 +"Sort: [Time]" +"Trideni [Cas]" + +#MSG_SORT_ALPHA c=17 r=1 +"Sort: [Alphabet]" +"Trideni [Abeceda]" + +#MSG_SORTING c=20 r=1 +"Sorting files" +"Trideni souboru" + +#MSG_SPEED c=0 r=0 +"Speed" +"Rychlost" + +#MSG_SELFTEST_FAN_YES c=19 r=0 +"Spinning" +"Toci se" + +#MSG_TEMP_CAL_WARNING c=20 r=4 +"Stable ambient temperature 21-26C is needed a rigid stand is required." +"\x00" + +#MSG_STATISTICS c=0 r=0 +"Statistics " +"Statistika " + +#MSG_STEPPER_TOO_HIGH c=0 r=0 +"Steprate too high: " +"Steprate too high: " + +#MSG_STOP_PRINT c=0 r=0 +"Stop print" +"Zastavit tisk" + +#MSG_STOPPED c=0 r=0 +"STOPPED. " +"STOPPED. " + +#MSG_SUPPORT c=0 r=0 +"Support" +"Podpora" + +#MSG_SELFTEST_SWAPPED c=0 r=0 +"Swapped" +"Prohozene" + +#MSG_TEMP_CALIBRATION c=20 r=1 +"Temp. cal. " +"Tepl. kal. " + +#MSG_TEMP_CALIBRATION_ON c=20 r=1 +"Temp. cal. [on]" +"Tepl. kal. [zap]" + +#MSG_TEMP_CALIBRATION_OFF c=20 r=1 +"Temp. cal. [off]" +"Tepl. kal. [vyp]" + +#MSG_CALIBRATION_PINDA_MENU c=17 r=1 +"Temp. calibration" +"Teplot. kalibrace" + +#MSG_TEMP_CAL_FAILED c=20 r=8 +"Temperature calibration failed" +"Teplotni kalibrace selhala" + +#MSG_PINDA_NOT_CALIBRATED c=20 r=4 +"Temperature calibration has not been run yet" +"Tiskarna nebyla teplotne zkalibrovana" + +#MSG_TEMP_CALIBRATION_DONE c=20 r=12 +"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +"Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal." + +#MSG_TEMPERATURE c=0 r=0 +"Temperature" +"Teplota" + +#MSG_MENU_TEMPERATURES c=15 r=1 +"Temperatures" +"Teploty" + +#MSG_STATS_TOTALFILAMENT c=20 r=0 +"Total filament :" +"Filament celkem :" + +#MSG_STATS_TOTALPRINTTIME c=20 r=0 +"Total print time :" +"Celkovy cas :" + +#MSG_ENDSTOP_HIT c=0 r=0 +"TRIGGERED" +"TRIGGERED" + +#MSG_TUNE c=0 r=0 +"Tune" +"Ladit" + +#MSG_UNLOAD_ALL c=0 r=0 +"Unload all" +"Vyjmout vse" + +#MSG_UNLOAD_FILAMENT_1 c=17 r=0 +"Unload filament 1" +"Vyjmout filam. 1" + +#MSG_UNLOAD_FILAMENT_2 c=17 r=0 +"Unload filament 2" +"Vyjmout filam. 2" + +#MSG_UNLOAD_FILAMENT_3 c=17 r=0 +"Unload filament 3" +"Vyjmout filam. 3" + +#MSG_UNLOAD_FILAMENT_4 c=17 r=0 +"Unload filament 4" +"Vyjmout filam. 4" + +#MSG_UNLOAD_FILAMENT c=17 r=0 +"Unload filament" +"Vyjmout filament" + +#MSG_UNLOADING_FILAMENT c=20 r=1 +"Unloading filament" +"Vysouvam filament" + +#MSG_USED c=19 r=1 +"Used during print" +"Pouzite behem tisku" + +#MSG_MENU_VOLTAGES c=15 r=1 +"Voltages" +"Napeti" + +#MSG_SD_VOL_INIT_FAIL c=0 r=0 +"volume.init failed" +"volume.init failed" + +#MSG_USERWAIT c=0 r=0 +"Wait for user..." +"Wait for user..." + +#MSG_WAITING_TEMP c=20 r=3 +"Waiting for nozzle and bed cooling" +"Cekani na zchladnuti trysky a podlozky." + +#MSG_WAITING_TEMP_PINDA c=20 r=3 +"Waiting for PINDA probe cooling" +"Cekani na zchladnuti PINDA" + +#MSG_CHANGED_BOTH c=20 r=4 +"Warning: both printer type and motherboard type changed." +"Varovani: doslo ke zmene typu tiskarny a motherboardu." + +#MSG_CHANGED_MOTHERBOARD c=20 r=4 +"Warning: motherboard type changed." +"Varovani: doslo ke zmene typu motherboardu." + +#MSG_CHANGED_PRINTER c=20 r=4 +"Warning: printer type changed." +"Varovani: doslo ke zmene typu tiskarny." + +#MSG_FW_VERSION_UNKNOWN c=20 r=8 +"WARNING: This is an unofficial, unsupported build. Use at your own risk!" +"VAROVANI: Neznama, nepodporovana verze firmware. Pouziti na vlastni nebezpeci!" + +#MSG_UNLOAD_SUCCESSFUL c=20 r=2 +"Was filament unload successful?" +"Bylo vysunuti filamentu uspesne?" + +#MSG_SELFTEST_WIRINGERROR c=0 r=0 +"Wiring error" +"Chyba zapojeni" + +#MSG_WIZARD c=17 r=1 +"Wizard" +"Wizard" + +#MSG_SD_WORKDIR_FAIL c=0 r=0 +"workDir open failed" +"workDir open failed" + +#MSG_SD_WRITE_TO_FILE c=0 r=0 +"Writing to file: " +"Writing to file: " + +#MSG_XYZ_DETAILS c=19 r=1 +"XYZ cal. details" +"Detaily XYZ kal." + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +"XYZ calibration all right. Skew will be corrected automatically." +"Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku." + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +"XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +"Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration compromised. Front calibration points not reachable." +"Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration compromised. Left front calibration point not reachable." +"Kalibrace XYZ nepresna. Levy predni bod moc vpredu." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration compromised. Right front calibration point not reachable." +"Kalibrace XYZ nepresna. Pravy predni bod moc vpredu." + +#MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 +"XYZ calibration failed. Bed calibration point was not found." +"Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration failed. Front calibration points not reachable." +"Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration failed. Left front calibration point not reachable." +"Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu." + +#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +"XYZ calibration failed. Please consult the manual." +"Kalibrace XYZ selhala. Nahlednete do manualu." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration failed. Right front calibration point not reachable." +"Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu." + +#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +"Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!" + +#MSG_Y_DISTANCE_FROM_MIN c=20 r=1 +"Y distance from min:" +"Y vzdalenost od min:" + +#MSG_YES c=0 r=0 +"Yes" +"Ano" + +#MSG_FW_VERSION_ALPHA c=20 r=8 +"You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +"Pouzivate alpha verzi firmwaru. Jedna se o vyvojovou verzi. Pouzivani teto verze firmware neni doporuceno a muze zpusobit poskozeni tiskarny." + +#MSG_FW_VERSION_BETA c=20 r=8 +"You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +"Pouzivate beta verzi firmwaru. Jedna se o vyvojovou verzi. Pouzivani teto verze firmware neni doporuceno a muze zpusobit poskozeni tiskarny." + +#MSG_WIZARD_QUIT c=20 r=8 +"You can always resume the Wizard from Calibration -> Wizard." +"Wizarda muzete kdykoliv znovu spustit z menu Calibration -> Wizard" + diff --git a/lang_upgrade/make_lang_en.sh b/lang_upgrade/make_lang_en.sh index 4b640f37..ea9348e6 100644 --- a/lang_upgrade/make_lang_en.sh +++ b/lang_upgrade/make_lang_en.sh @@ -1,12 +1,13 @@ #!/bin/sh # make_lang_en.sh - create english dictionary from msgs echo "make_lang_en.sh" -cat msgs_en_used_once.txt msgs_en_used_more.txt | cut -f4- -d' ' |\ +cat msgs_en_used_once.txt msgs_en_used_more.txt |\ + sed "s/[ ]*$//g" |\ sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ - sed "s/\" \"//g;s/\"//;s/\"$//" |\ + sed "s/\" \"//g" |\ sed 's/\\"/\\x22/g' |\ sed 's/\\xF8/\\xf8/g' |\ - sort > lang_en.txt + sort -k4 | sed "s/^/#/;s/ \"/\n\"/;s/\"$/\"\n/" > lang_en.txt echo "finished... press any key" read exit \ No newline at end of file diff --git a/lang_upgrade/make_lang_en_cz.sh b/lang_upgrade/make_lang_en_cz.sh new file mode 100644 index 00000000..921f9ce4 --- /dev/null +++ b/lang_upgrade/make_lang_en_cz.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# make_lang_en_cz.sh - create en_cz dictionary from msgs +echo "make_lang_en_cz.sh" +echo "please wait..." + +cat msgs_en_used_once.txt msgs_en_used_more.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_en_.txt + +cat msgs_cz.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_cz_.txt + +cat lang_en.txt | sed "/^$/d;/^#/d" | sed "s/\\\/\\\\\\\/g" |\ + while read text; do + msg='' + msg=$(grep -a -m 1 -h -w -F "$text" msgs_en_.txt) + if [ -z "$msg" ]; then + echo "#???" + echo "$text" + echo '"\x00"' + echo + else + name=$(echo $msg | cut -f1 -d' ') + cols=$(echo $msg | cut -f2 -d' ') + rows=$(echo $msg | cut -f3 -d' ') + echo "#$name $cols $rows" + echo "$text" + msg_cz=$(grep -a -m 1 -h "^$name " msgs_cz_.txt) + if [ -z "$msg_cz" ]; then + echo '"\x00"' + echo + else + text_cz=$(echo $msg_cz | cut -f2- -d' ') + echo "$text_cz" + echo + fi + fi +done > lang_en_cz.txt + +rm msgs_en_.txt +rm msgs_cz_.txt + +echo "finished... press any key" +read +exit + +#not found in msgs_cz: +# MSG_EXTRUDER_CORRECTION_OFF " [off" +# MSG_MEASURED_OFFSET "[0;0] point offset" +# MSG_EXTRUDER_CORRECTION "E-correct" +# MSG_PRUSA3D_FORUM "forum.prusa3d.com" +# MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +# MSG_PRINTER_DISCONNECTED "Printer disconnected" +# MSG_PRUSA3D "prusa3d.com" +# MSG_TEMP_CAL_WARNING "Stable ambient temperature 21-26C is needed a rigid stand is required." From d979c3dffcdf685581b5c2d4f0ff2e6f3c4c35c3 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 23 May 2018 14:18:37 +0200 Subject: [PATCH 32/68] New ML support - messages.c - some strings fixed --- Firmware/messages.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/messages.c b/Firmware/messages.c index 8ee082ce..cb7da419 100644 --- a/Firmware/messages.c +++ b/Firmware/messages.c @@ -77,11 +77,11 @@ const char MSG_SD_OPEN_FILE_FAIL[] PROGMEM_I1 = ISTR("open failed, File: "); /// const char MSG_SD_WORKDIR_FAIL[] PROGMEM_I1 = ISTR("workDir open failed"); ////c=0 r=0 const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20 r=0 const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20 r=0 -const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20 r=0 +const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20 r=0 const char MSG_SELFTEST_FAN[] PROGMEM_I1 = ISTR("Fan test"); ////c=20 r=0 const char MSG_SELFTEST_FAN_NO[] PROGMEM_I1 = ISTR("Not spinning"); ////c=19 r=0 const char MSG_SELFTEST_FAN_YES[] PROGMEM_I1 = ISTR("Spinning"); ////c=19 r=0 -const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed "); ////c=20 r=0 +const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed "); ////c=20 r=0 const char MSG_SELFTEST_CHECK_FSENSOR[] PROGMEM_I1 = ISTR("Checking sensors "); ////c=20 r=0 const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////c=0 r=0 const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////c=0 r=0 @@ -93,7 +93,7 @@ const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode [Stealth]"); ////c=0 const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2 const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////c=0 r=0 const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////c=0 r=0 -const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal. "); ////c=20 r=1 +const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal. "); ////c=20 r=1 const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12 const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17 r=0 const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1 From f00a9ce6367317960f11c861ed4c5fa2bddfb69e Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 23 May 2018 15:46:08 +0200 Subject: [PATCH 33/68] New ML support - language.c, language.h - code fixed, Marlin_main.cpp - debug output --- Firmware/Marlin_main.cpp | 16 ++++++++++++---- Firmware/language.c | 2 +- Firmware/language.h | 9 ++++----- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 6893fa75..f2a9ba9d 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1258,10 +1258,18 @@ void setup() // In the future, somewhere here would one compare the current firmware version against the firmware version stored in the EEPROM. // If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version // is being written into the EEPROM, so the update procedure will be triggered only once. - lang_selected = eeprom_read_byte((uint8_t*)EEPROM_LANG); - if (lang_selected >= LANG_NUM){ - lcd_mylang(); - } + +/// lang_selected = eeprom_read_byte((uint8_t*)EEPROM_LANG); +/// if (lang_selected >= LANG_NUM){ +/// lcd_mylang(); +/// } + lang_select(0); + puts_P(_n("\nNew ML support")); + printf_P(_n(" lang_selected =%d\n"), lang_selected); + printf_P(_n(" &_SEC_LANG =%04x\n"), &_SEC_LANG); + printf_P(_n(" sizeof(_SEC_LANG) =%04x\n"), sizeof(_SEC_LANG)); + puts_P(_n("\n")); + if (eeprom_read_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE) == 255) { eeprom_write_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE, 0); diff --git a/Firmware/language.c b/Firmware/language.c index d992b87e..a7f38fd1 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -10,7 +10,7 @@ unsigned char lang_selected = 0; #if (LANG_MODE == 0) //primary language only #else //(LANG_MODE == 0) //reserved xx kbytes for secondary language table -static const char _SEC_LANG[LANG_SIZE_RESERVED] PROGMEM_I2 = "_SEC_LANG"; +const char _SEC_LANG[LANG_SIZE_RESERVED] PROGMEM_I2 = "_SEC_LANG"; #endif //(LANG_MODE == 0) //lang_table_t structure - 16byte header diff --git a/Firmware/language.h b/Firmware/language.h index add874d6..fbd3ecde 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -21,11 +21,6 @@ #define STRINGIFY_(n) #n #define STRINGIFY(n) STRINGIFY_(n) -#if (LANG_MODE == 0) -//#define _i PSTR -//#define _I(s) (__extension__({static const char __c[] __attribute__((section("Txt_i"))) = s; &__c[0];})) -#endif //(LANG_MODE == 0) - //section progmem0 will be used for localized translated strings #define PROGMEM_I2 __attribute__((section(".progmem0"))) //section progmem1 will be used for localized strings in english @@ -70,6 +65,10 @@ extern "C" { // Currectly active language selection. extern unsigned char lang_selected; +#if (LANG_MODE != 0) +extern const char _SEC_LANG[LANG_SIZE_RESERVED]; +#endif //(LANG_MODE == 0) + extern const char* lang_get_translation(const char* s); extern const char* lang_select(unsigned char lang); From da3432e23705d03330d69cc2fd989190a5388173 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 23 May 2018 16:11:12 +0200 Subject: [PATCH 34/68] New ML support - changed _SEC_LANG reserved space to 10kb, added debug code --- Firmware/Marlin_main.cpp | 8 +++++--- Firmware/config.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f2a9ba9d..8bf5962d 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1265,9 +1265,11 @@ void setup() /// } lang_select(0); puts_P(_n("\nNew ML support")); - printf_P(_n(" lang_selected =%d\n"), lang_selected); - printf_P(_n(" &_SEC_LANG =%04x\n"), &_SEC_LANG); - printf_P(_n(" sizeof(_SEC_LANG) =%04x\n"), sizeof(_SEC_LANG)); + printf_P(_n(" lang_selected = %d\n"), lang_selected); + printf_P(_n(" &_SEC_LANG = 0x%04x\n"), &_SEC_LANG); + printf_P(_n(" sizeof(_SEC_LANG) = 0x%04x\n"), sizeof(_SEC_LANG)); + uint16_t ptr_lang_table0 = ((uint16_t)(&_SEC_LANG) + 0xff) & 0xff00; + printf_P(_n(" &_lang_table0 = 0x%04x\n"), ptr_lang_table0); puts_P(_n("\n")); diff --git a/Firmware/config.h b/Firmware/config.h index 14e88247..a90cad5a 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -21,7 +21,7 @@ //LANG - Multi-language support //#define LANG_MODE 0 // primary language only #define LANG_MODE 1 // sec. language support -#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12kb) +#define LANG_SIZE_RESERVED 0x2800 // reserved space for secondary language (10kb) #endif //_CONFIG_H From 2cf20c8c99500ba35d010d9b407ec42c56082c5a Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 23 May 2018 16:37:08 +0200 Subject: [PATCH 35/68] New ML support - migration - fix_source_1.sh script (replace 'MSG_xx' with '_T(MSG_xx)') + output + fixed source --- Firmware/Marlin_main.cpp | 154 +++---- Firmware/cardreader.cpp | 14 +- Firmware/cmdqueue.cpp | 8 +- Firmware/mesh_bed_calibration.cpp | 18 +- Firmware/stepper.cpp | 8 +- Firmware/ultralcd.cpp | 408 +++++++++--------- .../ultralcd_implementation_hitachi_HD44780.h | 14 +- lang_upgrade/fix_1.out | 96 +++++ lang_upgrade/fix_source_1.sh | 33 ++ 9 files changed, 441 insertions(+), 312 deletions(-) create mode 100644 lang_upgrade/fix_1.out create mode 100644 lang_upgrade/fix_source_1.sh diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 8bf5962d..8e479799 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -664,11 +664,11 @@ void crashdet_detected(uint8_t mask) #ifdef AUTOMATIC_RECOVERY_AFTER_CRASH bool yesno = true; #else - bool yesno = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_CRASH_DETECTED, false); + bool yesno = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_CRASH_DETECTED), false); #endif lcd_update_enable(true); lcd_update(2); - lcd_setstatuspgm(MSG_CRASH_DETECTED); + lcd_setstatuspgm(_T(MSG_CRASH_DETECTED)); if (yesno) { enquecommand_P(PSTR("G28 X Y")); @@ -1008,12 +1008,12 @@ void setup() // Check startup - does nothing if bootloader sets MCUSR to 0 byte mcu = MCUSR; -/* if (mcu & 1) SERIAL_ECHOLNRPGM(MSG_POWERUP); +/* if (mcu & 1) SERIAL_ECHOLNRPGM(_T(MSG_POWERUP)); if (mcu & 2) SERIAL_ECHOLNRPGM(MSG_EXTERNAL_RESET); if (mcu & 4) SERIAL_ECHOLNRPGM(MSG_BROWNOUT_RESET); if (mcu & 8) SERIAL_ECHOLNRPGM(MSG_WATCHDOG_RESET); if (mcu & 32) SERIAL_ECHOLNRPGM(MSG_SOFTWARE_RESET);*/ - if (mcu & 1) puts_P(MSG_POWERUP); + if (mcu & 1) puts_P(_T(MSG_POWERUP)); if (mcu & 2) puts_P(MSG_EXTERNAL_RESET); if (mcu & 4) puts_P(MSG_BROWNOUT_RESET); if (mcu & 8) puts_P(MSG_WATCHDOG_RESET); @@ -1348,11 +1348,11 @@ void setup() // Reset the babystepping values, so the printer will not move the Z axis up when the babystepping is enabled. eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0); // Show the message. - lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_FOLLOW_CALIBRATION_FLOW)); } else if (calibration_status() == CALIBRATION_STATUS_LIVE_ADJUST) { // Show the message. - lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_BABYSTEP_Z_NOT_SET)); lcd_update_enable(true); } else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && temp_cal_active == true && calibration_status_pinda() == false) { @@ -1361,7 +1361,7 @@ void setup() } else if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) { // Show the message. - lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_FOLLOW_CALIBRATION_FLOW)); } } @@ -1404,12 +1404,12 @@ void setup() #ifdef UVLO_SUPPORT if (eeprom_read_byte((uint8_t*)EEPROM_UVLO) == 1) { //previous print was terminated by UVLO /* - if (lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_RECOVER_PRINT, false)) recover_print(); + if (lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false)) recover_print(); else { eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0); lcd_update_enable(true); lcd_update(2); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); } */ manage_heater(); // Update temperatures @@ -1430,12 +1430,12 @@ void setup() #ifdef DEBUG_UVLO_AUTOMATIC_RECOVER MYSERIAL.println("Normal recovery!"); #endif - if ( lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_RECOVER_PRINT, false) ) recover_print(0); + if ( lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_RECOVER_PRINT), false) ) recover_print(0); else { eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0); lcd_update_enable(true); lcd_update(2); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); } } @@ -1630,7 +1630,7 @@ void loop() if(card.logging) process_commands(); else - SERIAL_PROTOCOLLNRPGM(MSG_OK); + SERIAL_PROTOCOLLNRPGM(_T(MSG_OK)); } else { card.closefile(); SERIAL_PROTOCOLLNRPGM(MSG_FILE_SAVED); @@ -1880,7 +1880,7 @@ static float probe_pt(float x, float y, float z_before) { run_z_probe(); float measured_z = current_position[Z_AXIS]; - SERIAL_PROTOCOLRPGM(MSG_BED); + SERIAL_PROTOCOLRPGM(_T(MSG_BED)); SERIAL_PROTOCOLPGM(" x: "); SERIAL_PROTOCOL(x); SERIAL_PROTOCOLPGM(" y: "); @@ -1943,9 +1943,9 @@ bool check_commands() { #ifdef TMC2130 bool calibrate_z_auto() { - //lcd_display_message_fullscreen_P(MSG_CALIBRATE_Z_AUTO); + //lcd_display_message_fullscreen_P(_T(MSG_CALIBRATE_Z_AUTO)); lcd_implementation_clear(); - lcd_print_at_PGM(0,1, MSG_CALIBRATE_Z_AUTO); + lcd_print_at_PGM(0,1, _T(MSG_CALIBRATE_Z_AUTO)); bool endstops_enabled = enable_endstops(true); int axis_up_dir = -home_dir(Z_AXIS); tmc2130_home_enter(Z_AXIS_MASK); @@ -2299,7 +2299,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) // Home in the XY plane. //set_destination_to_current(); setup_for_endstop_move(); - lcd_display_message_fullscreen_P(MSG_AUTO_HOME); + lcd_display_message_fullscreen_P(_T(MSG_AUTO_HOME)); home_xy(); enable_endstops(false); @@ -2327,15 +2327,15 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) { KEEPALIVE_STATE(PAUSED_FOR_USER); #ifdef STEEL_SHEET - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); - if(result) lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET); + bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); + if(result) lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); #endif //STEEL_SHEET - lcd_show_fullscreen_message_and_wait_P(MSG_CONFIRM_NOZZLE_CLEAN); - lcd_show_fullscreen_message_and_wait_P(MSG_PAPER); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_CONFIRM_NOZZLE_CLEAN)); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_PAPER)); KEEPALIVE_STATE(IN_HANDLER); - lcd_display_message_fullscreen_P(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1); + lcd_display_message_fullscreen_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1)); lcd_implementation_print_at(0, 2, 1); - lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); + lcd_printPGM(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2)); } // Move the print head close to the bed. current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; @@ -2428,7 +2428,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level) { // Calibration valid, the machine should be able to print. Advise the user to run the V2Calibration.gcode. calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST); - if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) != 1) lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) != 1) lcd_show_fullscreen_message_and_wait_P(_T(MSG_BABYSTEP_Z_NOT_SET)); final_result = true; } } @@ -2485,7 +2485,7 @@ void gcode_M701() custom_message = true; custom_message_type = 2; - lcd_setstatuspgm(MSG_LOADING_FILAMENT); + lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT)); current_position[E_AXIS] += 70; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence @@ -2498,7 +2498,7 @@ void gcode_M701() noTone(BEEPER); if (!farm_mode && loading_flag) { - bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); + bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); while (!clean) { lcd_update_enable(true); @@ -2506,14 +2506,14 @@ void gcode_M701() current_position[E_AXIS] += 25; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 100 / 60, active_extruder); //slow sequence st_synchronize(); - clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); + clean = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_CLEAN), false, true); } } lcd_update_enable(true); lcd_update(2); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); disable_z(); loading_flag = false; custom_message = false; @@ -2777,7 +2777,7 @@ void process_commands() disable_e2(); delay(100); - //LCD_ALERTMESSAGEPGM(MSG_FILAMENTCHANGE); + //LCD_ALERTMESSAGEPGM(_T(MSG_FILAMENTCHANGE)); uint8_t cnt=0; int counterBeep = 0; lcd_wait_interact(); @@ -3405,7 +3405,7 @@ void process_commands() feedrate = homing_feedrate[Z_AXIS]; run_z_probe(); - SERIAL_PROTOCOLPGM(MSG_BED); + SERIAL_PROTOCOLPGM(_T(MSG_BED)); SERIAL_PROTOCOLPGM(" X: "); SERIAL_PROTOCOL(current_position[X_AXIS]); SERIAL_PROTOCOLPGM(" Y: "); @@ -3437,7 +3437,7 @@ void process_commands() feedrate = homing_feedrate[Z_AXIS]; find_bed_induction_sensor_point_z(-10.f, 3); - SERIAL_PROTOCOLRPGM(MSG_BED); + SERIAL_PROTOCOLRPGM(_T(MSG_BED)); SERIAL_PROTOCOLPGM(" X: "); MYSERIAL.print(current_position[X_AXIS], 5); SERIAL_PROTOCOLPGM(" Y: "); @@ -3475,7 +3475,7 @@ void process_commands() break; } lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4 - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); + bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); if (result) { @@ -3483,7 +3483,7 @@ void process_commands() current_position[Y_AXIS] += 180; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); - lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET)); current_position[Y_AXIS] -= 180; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); @@ -3521,7 +3521,7 @@ void process_commands() custom_message = true; custom_message_type = 4; custom_message_state = 1; - custom_message = MSG_TEMP_CALIBRATION; + custom_message = _T(MSG_TEMP_CALIBRATION); current_position[X_AXIS] = PINDA_PREHEAT_X; current_position[Y_AXIS] = PINDA_PREHEAT_Y; current_position[Z_AXIS] = PINDA_PREHEAT_Z; @@ -3637,7 +3637,7 @@ void process_commands() custom_message = true; custom_message_type = 4; custom_message_state = 1; - custom_message = MSG_TEMP_CALIBRATION; + custom_message = _T(MSG_TEMP_CALIBRATION); current_position[X_AXIS] = PINDA_PREHEAT_X; current_position[Y_AXIS] = PINDA_PREHEAT_Y; current_position[Z_AXIS] = PINDA_PREHEAT_Z; @@ -3726,7 +3726,7 @@ void process_commands() disable_e1(); disable_e2(); setTargetBed(0); //set bed target temperature back to 0 - lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CALIBRATION_DONE); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_TEMP_CALIBRATION_DONE)); temp_cal_active = true; eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 1); lcd_update_enable(true); @@ -3803,7 +3803,7 @@ void process_commands() //previously enqueued "G28 W0" failed (crash Z) if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && !axis_known_position[Z_AXIS] && (READ(Z_TMC2130_DIAG) != 0)) { - kill(MSG_BED_LEVELING_FAILED_POINT_LOW); + kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW)); break; } #endif //TMC2130 @@ -3955,7 +3955,7 @@ void process_commands() // Go down until endstop is hit const float Z_CALIBRATION_THRESHOLD = 1.f; if (!find_bed_induction_sensor_point_z((has_z && mesh_point > 0) ? z0 - Z_CALIBRATION_THRESHOLD : -10.f)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point - kill_message = MSG_BED_LEVELING_FAILED_POINT_LOW; + kill_message = _T(MSG_BED_LEVELING_FAILED_POINT_LOW); break; } if (MESH_HOME_Z_SEARCH - current_position[Z_AXIS] < 0.1f) { @@ -4317,7 +4317,7 @@ void process_commands() if (IS_SD_PRINTING) LCD_MESSAGERPGM(_i("Resuming print"));////MSG_RESUMING c=0 r=0 else - LCD_MESSAGERPGM(WELCOME_MSG); + LCD_MESSAGERPGM(_T(WELCOME_MSG)); } break; #endif @@ -4945,7 +4945,7 @@ Sigma_Exit: if(setTargetedHotend(109)){ break; } - LCD_MESSAGERPGM(MSG_HEATING); + LCD_MESSAGERPGM(_T(MSG_HEATING)); heating_status = 1; if (farm_mode) { prusa_statistics(1); }; @@ -4981,7 +4981,7 @@ Sigma_Exit: wait_for_heater(codenum); //loops until target temperature is reached - LCD_MESSAGERPGM(MSG_HEATING_COMPLETE); + LCD_MESSAGERPGM(_T(MSG_HEATING_COMPLETE)); KEEPALIVE_STATE(IN_HANDLER); heating_status = 2; if (farm_mode) { prusa_statistics(2); }; @@ -4992,7 +4992,7 @@ Sigma_Exit: break; case 190: // M190 - Wait for bed heater to reach target. #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1 - LCD_MESSAGERPGM(MSG_BED_HEATING); + LCD_MESSAGERPGM(_T(MSG_BED_HEATING)); heating_status = 3; if (farm_mode) { prusa_statistics(1); }; if (code_seen('S')) @@ -5032,7 +5032,7 @@ Sigma_Exit: manage_inactivity(); lcd_update(); } - LCD_MESSAGERPGM(MSG_BED_DONE); + LCD_MESSAGERPGM(_T(MSG_BED_DONE)); KEEPALIVE_STATE(IN_HANDLER); heating_status = 4; @@ -5069,7 +5069,7 @@ Sigma_Exit: #ifdef ULTIPANEL powersupply = true; - LCD_MESSAGERPGM(WELCOME_MSG); + LCD_MESSAGERPGM(_T(WELCOME_MSG)); lcd_update(); #endif break; @@ -5100,7 +5100,7 @@ Sigma_Exit: MSGOFF = "Vypnuto" "Prusai3"" ""vypnuto""." - "Prusa i3"" "MSG_ALL[lang_selected][50]"." + "Prusa i3"" "_T(MSG_ALL)[lang_selected][50]"." */ lcd_update(); #endif @@ -5230,54 +5230,54 @@ Sigma_Exit: #if defined(X_MIN_PIN) && X_MIN_PIN > -1 SERIAL_PROTOCOLRPGM(_n("x_min: "));////MSG_X_MIN c=0 r=0 if(READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING){ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_HIT)); }else{ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_OPEN)); } SERIAL_PROTOCOLLN(""); #endif #if defined(X_MAX_PIN) && X_MAX_PIN > -1 SERIAL_PROTOCOLRPGM(_n("x_max: "));////MSG_X_MAX c=0 r=0 if(READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING){ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_HIT)); }else{ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_OPEN)); } SERIAL_PROTOCOLLN(""); #endif #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1 SERIAL_PROTOCOLRPGM(_n("y_min: "));////MSG_Y_MIN c=0 r=0 if(READ(Y_MIN_PIN)^Y_MIN_ENDSTOP_INVERTING){ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_HIT)); }else{ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_OPEN)); } SERIAL_PROTOCOLLN(""); #endif #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1 SERIAL_PROTOCOLRPGM(_n("y_max: "));////MSG_Y_MAX c=0 r=0 if(READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING){ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_HIT)); }else{ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_OPEN)); } SERIAL_PROTOCOLLN(""); #endif #if defined(Z_MIN_PIN) && Z_MIN_PIN > -1 SERIAL_PROTOCOLRPGM(MSG_Z_MIN); if(READ(Z_MIN_PIN)^Z_MIN_ENDSTOP_INVERTING){ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_HIT)); }else{ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_OPEN)); } SERIAL_PROTOCOLLN(""); #endif #if defined(Z_MAX_PIN) && Z_MAX_PIN > -1 SERIAL_PROTOCOLRPGM(MSG_Z_MAX); if(READ(Z_MAX_PIN)^Z_MAX_ENDSTOP_INVERTING){ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_HIT); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_HIT)); }else{ - SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN); + SERIAL_PROTOCOLRPGM(_T(MSG_ENDSTOP_OPEN)); } SERIAL_PROTOCOLLN(""); #endif @@ -5588,7 +5588,7 @@ Sigma_Exit: } } else if (servo_index >= 0) { - SERIAL_PROTOCOL(MSG_OK); + SERIAL_PROTOCOL(_T(MSG_OK)); SERIAL_PROTOCOL(" Servo "); SERIAL_PROTOCOL(servo_index); SERIAL_PROTOCOL(": "); @@ -5636,7 +5636,7 @@ Sigma_Exit: #endif updatePID(); - SERIAL_PROTOCOLRPGM(MSG_OK); + SERIAL_PROTOCOLRPGM(_T(MSG_OK)); SERIAL_PROTOCOL(" p:"); SERIAL_PROTOCOL(Kp); SERIAL_PROTOCOL(" i:"); @@ -5660,7 +5660,7 @@ Sigma_Exit: if(code_seen('D')) bedKd = scalePID_d(code_value()); updatePID(); - SERIAL_PROTOCOLRPGM(MSG_OK); + SERIAL_PROTOCOLRPGM(_T(MSG_OK)); SERIAL_PROTOCOL(" p:"); SERIAL_PROTOCOL(bedKp); SERIAL_PROTOCOL(" i:"); @@ -5788,7 +5788,7 @@ Sigma_Exit: { zprobe_zoffset = -value; // compare w/ line 278 of ConfigurationStore.cpp SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(CAT4(MSG_ZPROBE_ZOFFSET, " ", MSG_OK,PSTR(""))); + SERIAL_ECHOLNRPGM(CAT4(MSG_ZPROBE_ZOFFSET, " ", _T(MSG_OK),PSTR(""))); SERIAL_PROTOCOLLN(""); } else @@ -5911,7 +5911,7 @@ Sigma_Exit: fanSpeed = 0; unsigned long waiting_start_time = millis(); uint8_t wait_for_user_state = 0; - lcd_display_message_fullscreen_P(MSG_PRESS_TO_UNLOAD); + lcd_display_message_fullscreen_P(_T(MSG_PRESS_TO_UNLOAD)); while (!(wait_for_user_state == 0 && lcd_clicked())){ //cnt++; @@ -5977,7 +5977,7 @@ Sigma_Exit: case 2: if (abs(degTargetHotend(active_extruder) - degHotend(active_extruder)) < 1) { - lcd_display_message_fullscreen_P(MSG_PRESS_TO_UNLOAD); + lcd_display_message_fullscreen_P(_T(MSG_PRESS_TO_UNLOAD)); waiting_start_time = millis(); wait_for_user_state = 0; } @@ -5997,10 +5997,10 @@ Sigma_Exit: // Unload filament - lcd_display_message_fullscreen_P(MSG_UNLOADING_FILAMENT); + lcd_display_message_fullscreen_P(_T(MSG_UNLOADING_FILAMENT)); KEEPALIVE_STATE(IN_HANDLER); custom_message = true; - lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); + lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); if (code_seen('L')) { @@ -6074,7 +6074,7 @@ Sigma_Exit: //finish moves st_synchronize(); - lcd_display_message_fullscreen_P(MSG_PULL_OUT_FILAMENT); + lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT)); //disable extruder steppers so filament can be removed disable_e0(); @@ -6268,7 +6268,7 @@ Sigma_Exit: sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); enquecommand(cmd); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); custom_message = false; custom_message_type = 0; @@ -6315,7 +6315,7 @@ Sigma_Exit: break; } - LCD_MESSAGERPGM(MSG_PLEASE_WAIT); + LCD_MESSAGERPGM(_T(MSG_PLEASE_WAIT)); SERIAL_PROTOCOLPGM("Wait for PINDA target temperature:"); SERIAL_PROTOCOL(setTargetPinda); @@ -6340,7 +6340,7 @@ Sigma_Exit: manage_inactivity(); lcd_update(); } - LCD_MESSAGERPGM(MSG_OK); + LCD_MESSAGERPGM(_T(MSG_OK)); break; } @@ -6612,7 +6612,7 @@ Sigma_Exit: #endif //PAT9125 custom_message = true; custom_message_type = 2; - lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); + lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); // extr_unload2(); @@ -6626,7 +6626,7 @@ Sigma_Exit: plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1000 / 60, active_extruder); st_synchronize(); - lcd_display_message_fullscreen_P(MSG_PULL_OUT_FILAMENT); + lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT)); //disable extruder steppers so filament can be removed disable_e0(); @@ -6648,7 +6648,7 @@ Sigma_Exit: lcd_update_enable(true); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); custom_message = false; custom_message_type = 0; #ifdef PAT9125 @@ -6844,7 +6844,7 @@ void FlushSerialRequestResend() SERIAL_PROTOCOLRPGM(_i("Resend: "));////MSG_RESEND c=0 r=0 SERIAL_PROTOCOLLN(gcode_LastN + 1); previous_millis_cmd = millis(); - SERIAL_PROTOCOLLNRPGM(MSG_OK); + SERIAL_PROTOCOLLNRPGM(_T(MSG_OK)); } // Confirm the execution of a command, if sent from a serial line. @@ -6853,7 +6853,7 @@ void ClearToSend() { previous_millis_cmd = millis(); if (CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB) - SERIAL_PROTOCOLLNRPGM(MSG_OK); + SERIAL_PROTOCOLLNRPGM(_T(MSG_OK)); } #if MOTHERBOARD == BOARD_RAMBO_MINI_1_0 || MOTHERBOARD == BOARD_RAMBO_MINI_1_3 @@ -7191,9 +7191,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s lcd_update_enable(false); lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_implementation_clear(); lcd_update_enable(true); @@ -7351,8 +7351,8 @@ void Stop() Stopped = true; Stopped_gcode_LastN = gcode_LastN; // Save last g_code for restart SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_ERR_STOPPED); - LCD_MESSAGERPGM(MSG_STOPPED); + SERIAL_ERRORLNRPGM(_T(MSG_ERR_STOPPED)); + LCD_MESSAGERPGM(_T(MSG_STOPPED)); } } diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 5569cf88..ace2a9ab 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -211,7 +211,7 @@ void CardReader::initsd() /* if(!workDir.openRoot(&volume)) { - SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL); + SERIAL_ECHOLNPGM(_T(MSG_SD_WORKDIR_FAIL)); } */ @@ -221,7 +221,7 @@ void CardReader::setroot() { /*if(!workDir.openRoot(&volume)) { - SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL); + SERIAL_ECHOLNPGM(_T(MSG_SD_WORKDIR_FAIL)); }*/ workDir=root; @@ -360,7 +360,7 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) SERIAL_ECHOLN(subdirname); if(!myDir.open(curDir,subdirname,O_READ)) { - SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL); + SERIAL_PROTOCOLRPGM(_T(MSG_SD_OPEN_FILE_FAIL)); SERIAL_PROTOCOL(subdirname); SERIAL_PROTOCOLLNPGM("."); return; @@ -405,7 +405,7 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) } else { - SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL); + SERIAL_PROTOCOLRPGM(_T(MSG_SD_OPEN_FILE_FAIL)); SERIAL_PROTOCOL(fname); SERIAL_PROTOCOLLNPGM("."); } @@ -414,7 +414,7 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) { //write if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) { - SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL); + SERIAL_PROTOCOLRPGM(_T(MSG_SD_OPEN_FILE_FAIL)); SERIAL_PROTOCOL(fname); SERIAL_PROTOCOLLNPGM("."); } @@ -546,7 +546,7 @@ void CardReader::write_command(char *buf) if (file.writeError) { SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_SD_ERR_WRITE_TO_FILE); + SERIAL_ERRORLNRPGM(_T(MSG_SD_ERR_WRITE_TO_FILE)); } } @@ -558,7 +558,7 @@ void CardReader::write_command_no_newline(char *buf) if (file.writeError) { SERIAL_ERROR_START; - SERIAL_ERRORLNRPGM(MSG_SD_ERR_WRITE_TO_FILE); + SERIAL_ERRORLNRPGM(_T(MSG_SD_ERR_WRITE_TO_FILE)); MYSERIAL.println("An error while writing to the SD Card."); } } diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index 65c59198..32cb7084 100644 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -286,7 +286,7 @@ void enquecommand(const char *cmd, bool from_progmem) else strcpy(cmdbuffer + bufindw + CMDHDRSIZE, cmd); SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_Enqueing); + SERIAL_ECHORPGM(_T(MSG_Enqueing)); SERIAL_ECHO(cmdbuffer + bufindw + CMDHDRSIZE); SERIAL_ECHOLNPGM("\""); bufindw += len + (CMDHDRSIZE + 1); @@ -298,7 +298,7 @@ void enquecommand(const char *cmd, bool from_progmem) #endif /* CMDBUFFER_DEBUG */ } else { SERIAL_ERROR_START; - SERIAL_ECHORPGM(MSG_Enqueing); + SERIAL_ECHORPGM(_T(MSG_Enqueing)); if (from_progmem) SERIAL_PROTOCOLRPGM(cmd); else @@ -483,8 +483,8 @@ void get_command() if (Stopped == true) { int gcode = strtol(strchr_pointer+1, NULL, 10); if (gcode >= 0 && gcode <= 3) { - SERIAL_ERRORLNRPGM(MSG_ERR_STOPPED); - LCD_MESSAGERPGM(MSG_STOPPED); + SERIAL_ERRORLNRPGM(_T(MSG_ERR_STOPPED)); + LCD_MESSAGERPGM(_T(MSG_STOPPED)); } } } // end of 'G' command diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 80b5642a..00c59899 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2182,7 +2182,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level #endif // SUPPORT_VERBOSITY #ifdef MESH_BED_CALIBRATION_SHOW_LCD uint8_t next_line; - lcd_display_message_fullscreen_P(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1, next_line); + lcd_display_message_fullscreen_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1), next_line); if (next_line > 3) next_line = 3; #endif /* MESH_BED_CALIBRATION_SHOW_LCD */ @@ -2194,7 +2194,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level refresh_cmd_timeout(); #ifdef MESH_BED_CALIBRATION_SHOW_LCD lcd_implementation_print_at(0, next_line, k + 1); - lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); + lcd_printPGM(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2)); if (iteration > 0) { lcd_print_at_PGM(0, next_line + 1, _i("Iteration "));////MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 @@ -2725,7 +2725,7 @@ bool sample_z() { go_to_current(homing_feedrate[Z_AXIS] / 60); //plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);); - lcd_show_fullscreen_message_and_wait_P(MSG_PLACE_STEEL_SHEET); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); // Sample Z heights for the mesh bed leveling. // In addition, store the results into an eeprom, to be used later for verification of the bed leveling process. @@ -2767,12 +2767,12 @@ bool sample_mesh_and_store_reference() #ifdef MESH_BED_CALIBRATION_SHOW_LCD uint8_t next_line; - lcd_display_message_fullscreen_P(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1, next_line); + lcd_display_message_fullscreen_P(_T(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1), next_line); if (next_line > 3) next_line = 3; // display "point xx of yy" lcd_implementation_print_at(0, next_line, 1); - lcd_printPGM(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2); + lcd_printPGM(_T(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2)); #endif /* MESH_BED_CALIBRATION_SHOW_LCD */ // Sample Z heights for the mesh bed leveling. @@ -2792,7 +2792,7 @@ bool sample_mesh_and_store_reference() #ifdef TMC2130 if (!axis_known_position[Z_AXIS] && (READ(Z_TMC2130_DIAG) != 0)) //Z crash { - kill(MSG_BED_LEVELING_FAILED_POINT_LOW); + kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW)); return false; } #endif //TMC2130 @@ -2800,7 +2800,7 @@ bool sample_mesh_and_store_reference() enable_endstops(false); if (!find_bed_induction_sensor_point_z()) //Z crash or deviation > 50um { - kill(MSG_BED_LEVELING_FAILED_POINT_LOW); + kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW)); return false; } mbl.set_z(0, 0, current_position[Z_AXIS]); @@ -2818,11 +2818,11 @@ bool sample_mesh_and_store_reference() #ifdef MESH_BED_CALIBRATION_SHOW_LCD // display "point xx of yy" lcd_implementation_print_at(0, next_line, mesh_point+1); - lcd_printPGM(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2); + lcd_printPGM(_T(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2)); #endif /* MESH_BED_CALIBRATION_SHOW_LCD */ if (!find_bed_induction_sensor_point_z()) //Z crash or deviation > 50um { - kill(MSG_BED_LEVELING_FAILED_POINT_LOW); + kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW)); return false; } // Get cords of measuring point diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 623c4bc7..6297fe79 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -227,18 +227,18 @@ void checkHitEndstops() { if( endstop_x_hit || endstop_y_hit || endstop_z_hit) { SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_ENDSTOPS_HIT); + SERIAL_ECHORPGM(_T(MSG_ENDSTOPS_HIT)); if(endstop_x_hit) { SERIAL_ECHOPAIR(" X:",(float)endstops_trigsteps[X_AXIS]/axis_steps_per_unit[X_AXIS]); - LCD_MESSAGERPGM(CAT2(MSG_ENDSTOPS_HIT, PSTR("X"))); + LCD_MESSAGERPGM(CAT2(_T(MSG_ENDSTOPS_HIT), PSTR("X"))); } if(endstop_y_hit) { SERIAL_ECHOPAIR(" Y:",(float)endstops_trigsteps[Y_AXIS]/axis_steps_per_unit[Y_AXIS]); - LCD_MESSAGERPGM(CAT2(MSG_ENDSTOPS_HIT, PSTR("Y"))); + LCD_MESSAGERPGM(CAT2(_T(MSG_ENDSTOPS_HIT), PSTR("Y"))); } if(endstop_z_hit) { SERIAL_ECHOPAIR(" Z:",(float)endstops_trigsteps[Z_AXIS]/axis_steps_per_unit[Z_AXIS]); - LCD_MESSAGERPGM(CAT2(MSG_ENDSTOPS_HIT,PSTR("Z"))); + LCD_MESSAGERPGM(CAT2(_T(MSG_ENDSTOPS_HIT),PSTR("Z"))); } SERIAL_ECHOLN(""); endstop_x_hit=false; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2c7f5ec5..f5bd35e1 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -447,7 +447,7 @@ static void lcd_status_screen() set_language_from_EEPROM(); if(lcd_status_message_level == 0){ - strncpy_P(lcd_status_message, WELCOME_MSG, LCD_WIDTH); + strncpy_P(lcd_status_message, _T(WELCOME_MSG), LCD_WIDTH); lcd_finishstatus(); } if (eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME) == 255 && eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME + 1) == 255 && eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME + 2) == 255 && eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME + 3) == 255) @@ -630,7 +630,7 @@ void lcd_commands() if(lcd_commands_step == 0) { if (card.sdprinting) { card.pauseSDPrint(); - lcd_setstatuspgm(MSG_FINISHING_MOVEMENTS); + lcd_setstatuspgm(_T(MSG_FINISHING_MOVEMENTS)); lcdDrawUpdate = 3; lcd_commands_step = 1; } @@ -730,7 +730,7 @@ void lcd_commands() enquecommand_P(PSTR("M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP))); enquecommand_P(PSTR("M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP))); enquecommand_P(PSTR("T0")); - enquecommand_P(MSG_M117_V2_CALIBRATION); + enquecommand_P(_T(MSG_M117_V2_CALIBRATION)); enquecommand_P(PSTR("G87")); //sets calibration status enquecommand_P(PSTR("G28")); enquecommand_P(PSTR("G21")); //set units to millimeters @@ -962,7 +962,7 @@ void lcd_commands() if (lcd_commands_step == 1 && !blocks_queued() && cmd_buffer_empty()) { - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); lcd_commands_step = 0; lcd_commands_type = 0; if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) { @@ -993,7 +993,7 @@ void lcd_commands() enquecommand_P(PSTR("M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP))); enquecommand_P(PSTR("M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP))); enquecommand_P(PSTR("M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP))); - enquecommand_P(MSG_M117_V2_CALIBRATION); + enquecommand_P(_T(MSG_M117_V2_CALIBRATION)); enquecommand_P(PSTR("G28")); enquecommand_P(PSTR("G92 E0.0")); lcd_commands_step = 8; @@ -1196,7 +1196,7 @@ void lcd_commands() } if (lcd_commands_step == 1 && !blocks_queued() && cmd_buffer_empty()) { - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); lcd_commands_step = 0; lcd_commands_type = 0; if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) { @@ -1222,7 +1222,7 @@ void lcd_commands() { lcd_commands_step = 0; lcd_commands_type = 0; - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); custom_message_type = 0; custom_message = false; isPrintPaused = false; @@ -1233,7 +1233,7 @@ void lcd_commands() enquecommand_P(PSTR("M104 S0")); //set hotend temp to 0 manage_heater(); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); cancel_heatup = false; lcd_commands_step = 1; } @@ -1246,7 +1246,7 @@ void lcd_commands() } if (lcd_commands_step == 4 && !blocks_queued()) { - lcd_setstatuspgm(MSG_PLEASE_WAIT); + lcd_setstatuspgm(_T(MSG_PLEASE_WAIT)); // G90: Absolute positioning. enquecommand_P(PSTR("G90")); // M83: Set extruder to relative mode. @@ -1265,7 +1265,7 @@ void lcd_commands() } if (lcd_commands_step == 5 && !blocks_queued()) { - lcd_setstatuspgm(MSG_PRINT_ABORTED); + lcd_setstatuspgm(_T(MSG_PRINT_ABORTED)); // G91: Set to relative positioning. enquecommand_P(PSTR("G91")); // Lift up. @@ -1275,7 +1275,7 @@ void lcd_commands() } if (lcd_commands_step == 6 && !blocks_queued()) { - lcd_setstatuspgm(MSG_PRINT_ABORTED); + lcd_setstatuspgm(_T(MSG_PRINT_ABORTED)); cancel_heatup = true; setTargetBed(0); #ifndef SNMM @@ -1387,7 +1387,7 @@ void lcd_commands() lcd_commands_step = 1; } if ((lcd_commands_step == 1) && ((millis()- display_time)>2000)) { //calibration finished message - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); custom_message_type = 0; custom_message = false; pid_temp = DEFAULT_PID_TEMP; @@ -1644,7 +1644,7 @@ static void lcd_menu_fails_stats_print() static void lcd_menu_fails_stats() { START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); MENU_ITEM(submenu, PSTR("Last print"), lcd_menu_fails_stats_print); MENU_ITEM(submenu, PSTR("Total"), lcd_menu_fails_stats_total); END_MENU(); @@ -1760,12 +1760,12 @@ static void lcd_preheat_menu() { START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); if (farm_mode) { MENU_ITEM(function, PSTR("farm - " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FARM_PREHEAT_HPB_TEMP)), lcd_preheat_farm); MENU_ITEM(function, PSTR("nozzle - " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/0"), lcd_preheat_farm_nozzle); - MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); + MENU_ITEM(function, _T(MSG_COOLDOWN), lcd_cooldown); MENU_ITEM(function, PSTR("ABS - " STRINGIFY(ABS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ABS_PREHEAT_HPB_TEMP)), lcd_preheat_abs); } else { MENU_ITEM(function, PSTR("PLA - " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PLA_PREHEAT_HPB_TEMP)), lcd_preheat_pla); @@ -1774,7 +1774,7 @@ static void lcd_preheat_menu() MENU_ITEM(function, PSTR("HIPS - " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)), lcd_preheat_hips); MENU_ITEM(function, PSTR("PP - " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)), lcd_preheat_pp); MENU_ITEM(function, PSTR("FLEX - " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)), lcd_preheat_flex); - MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); + MENU_ITEM(function, _T(MSG_COOLDOWN), lcd_cooldown); } @@ -1802,7 +1802,7 @@ static void lcd_support_menu() START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); MENU_ITEM(back, PSTR("Firmware:"), 0); MENU_ITEM(back, PSTR(" " FW_VERSION_FULL), 0); @@ -1880,9 +1880,9 @@ void lcd_unLoadFilament() lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_implementation_clear(); @@ -1939,7 +1939,7 @@ void lcd_loading_color() { lcd_printPGM(_i("Loading color"));////MSG_LOADING_COLOR c=0 r=0 lcd.setCursor(0, 2); - lcd_printPGM(MSG_PLEASE_WAIT); + lcd_printPGM(_T(MSG_PLEASE_WAIT)); for (int i = 0; i < 20; i++) { @@ -1966,9 +1966,9 @@ void lcd_loading_filament() { lcd.setCursor(0, 0); - lcd_printPGM(MSG_LOADING_FILAMENT); + lcd_printPGM(_T(MSG_LOADING_FILAMENT)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PLEASE_WAIT); + lcd_printPGM(_T(MSG_PLEASE_WAIT)); for (int i = 0; i < 20; i++) { @@ -2008,7 +2008,7 @@ void lcd_alright() { lcd.setCursor(1, 1); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(1, 2); @@ -2094,9 +2094,9 @@ static void lcd_menu_AutoLoadFilament() Timer* ptimer = (Timer*)&(menuData.autoLoadFilamentMenu.dummy); if (!ptimer->running()) ptimer->start(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); if (ptimer->expired(2000ul)) menu_action_back(); } if (lcd_clicked()) menu_action_back(); @@ -2118,9 +2118,9 @@ static void lcd_LoadFilament() lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_implementation_clear(); } @@ -2287,9 +2287,9 @@ static void lcd_move_e() else { lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_return_to_status(); @@ -2560,7 +2560,7 @@ static void lcd_adjust_bed() eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, menuData.adjustBed.rear = menuData.adjustBed.rear2); START_MENU(); - MENU_ITEM(back, MSG_SETTINGS, 0); + MENU_ITEM(back, _T(MSG_SETTINGS), 0); MENU_ITEM_EDIT(int3, _i("Left side [um]"), &menuData.adjustBed.left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14 r=1 MENU_ITEM_EDIT(int3, _i("Right side[um]"), &menuData.adjustBed.right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14 r=1 MENU_ITEM_EDIT(int3, _i("Front side[um]"), &menuData.adjustBed.front2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14 r=1 @@ -2600,11 +2600,11 @@ void lcd_adjust_z() { lcd.setCursor(0, 0); lcd_printPGM(_i("Auto adjust Z?"));////MSG_ADJUSTZ c=0 r=0 lcd.setCursor(1, 1); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(1, 2); - lcd_printPGM(MSG_NO); + lcd_printPGM(_T(MSG_NO)); lcd.setCursor(0, 1); @@ -2702,7 +2702,7 @@ bool lcd_wait_for_pinda(float temp) { } void lcd_wait_for_heater() { - lcd_display_message_fullscreen_P(MSG_WIZARD_HEATING); + lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); lcd.setCursor(0, 4); lcd.print(LCD_STR_THERMOMETER[0]); @@ -2795,7 +2795,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) } if (! clean_nozzle_asked) { - lcd_show_fullscreen_message_and_wait_P(MSG_CONFIRM_NOZZLE_CLEAN); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_CONFIRM_NOZZLE_CLEAN)); clean_nozzle_asked = true; } @@ -2817,14 +2817,14 @@ calibrated: if(only_z){ - lcd_display_message_fullscreen_P(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1); + lcd_display_message_fullscreen_P(_T(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1)); lcd_implementation_print_at(0, 3, 1); - lcd_printPGM(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2); + lcd_printPGM(_T(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2)); }else{ - //lcd_show_fullscreen_message_and_wait_P(MSG_PAPER); - lcd_display_message_fullscreen_P(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1); + //lcd_show_fullscreen_message_and_wait_P(_T(MSG_PAPER)); + lcd_display_message_fullscreen_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1)); lcd_implementation_print_at(0, 2, 1); - lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); + lcd_printPGM(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2)); } @@ -3048,11 +3048,11 @@ int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allo lcd.setCursor(0, 3); if (yes) lcd_printPGM(PSTR(">")); lcd.setCursor(1, 3); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(7, 3); if (!yes) lcd_printPGM(PSTR(">")); lcd.setCursor(8, 3); - lcd_printPGM(MSG_NO); + lcd_printPGM(_T(MSG_NO)); } } } @@ -3065,16 +3065,16 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow if (default_yes) { lcd.setCursor(0, 2); lcd_printPGM(PSTR(">")); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(1, 3); - lcd_printPGM(MSG_NO); + lcd_printPGM(_T(MSG_NO)); } else { lcd.setCursor(1, 2); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(0, 3); lcd_printPGM(PSTR(">")); - lcd_printPGM(MSG_NO); + lcd_printPGM(_T(MSG_NO)); } bool yes = default_yes ? true : false; @@ -3120,7 +3120,7 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui lcd_show_fullscreen_message_and_wait_P(_i("XYZ calibration failed. Bed calibration point was not found."));////MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 } else if (result == BED_SKEW_OFFSET_DETECTION_FITTING_FAILED) { if (point_too_far_mask == 0) - msg = MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED; + msg = _T(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED); else if (point_too_far_mask == 2 || point_too_far_mask == 7) // Only the center point or all the three front points. msg = _i("XYZ calibration failed. Front calibration points not reachable.");////MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 @@ -3148,7 +3148,7 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui switch (result) { default: // should not happen - msg = MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED; + msg = _T(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED); break; case BED_SKEW_OFFSET_DETECTION_PERFECT: msg = _i("XYZ calibration ok. X/Y axes are perpendicular. Congratulations!");////MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 @@ -3180,7 +3180,7 @@ void lcd_temp_cal_show_result(bool result) { if (result == true) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 1); SERIAL_ECHOLNPGM("Temperature calibration done. Continue with pressing the knob."); - lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CALIBRATION_DONE); + lcd_show_fullscreen_message_and_wait_P(_T(MSG_TEMP_CALIBRATION_DONE)); temp_cal_active = true; eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 1); } @@ -3554,7 +3554,7 @@ void lcd_pick_babystep(){ void lcd_move_menu_axis() { START_MENU(); - MENU_ITEM(back, MSG_SETTINGS, 0); + MENU_ITEM(back, _T(MSG_SETTINGS), 0); MENU_ITEM(submenu, _i("Move X"), lcd_move_x);////MSG_MOVE_X c=0 r=0 MENU_ITEM(submenu, _i("Move Y"), lcd_move_y);////MSG_MOVE_Y c=0 r=0 MENU_ITEM(submenu, _i("Move Z"), lcd_move_z);////MSG_MOVE_Z c=0 r=0 @@ -3749,9 +3749,9 @@ static void lcd_language_menu() { START_MENU(); if (langsel == LANGSEL_OFF) { - MENU_ITEM(back, MSG_SETTINGS, 0); + MENU_ITEM(back, _T(MSG_SETTINGS), 0); } else if (langsel == LANGSEL_ACTIVE) { - MENU_ITEM(back, MSG_WATCH, 0); + MENU_ITEM(back, _T(MSG_WATCH), 0); } for (int i=0;i 3) { - lcd_display_message_fullscreen_P(MSG_WIZARD_HEATING); + lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); lcd.setCursor(0, 4); lcd.print(LCD_STR_THERMOMETER[0]); @@ -4037,7 +4037,7 @@ void lcd_wizard(int state) { lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8 lcd_update_enable(false); lcd_implementation_clear(); - lcd_print_at_PGM(0, 2, MSG_LOADING_FILAMENT); + lcd_print_at_PGM(0, 2, _T(MSG_LOADING_FILAMENT)); #ifdef SNMM change_extr(0); #endif @@ -4081,20 +4081,20 @@ void lcd_wizard(int state) { MYSERIAL.println(state); switch (state) { //final message case 0: //user dont want to use wizard - msg = MSG_WIZARD_QUIT; + msg = _T(MSG_WIZARD_QUIT); break; case 1: //printer was already calibrated - msg = MSG_WIZARD_DONE; + msg = _T(MSG_WIZARD_DONE); break; case 2: //selftest - msg = MSG_WIZARD_CALIBRATION_FAILED; + msg = _T(MSG_WIZARD_CALIBRATION_FAILED); break; case 3: //xyz cal. - msg = MSG_WIZARD_CALIBRATION_FAILED; + msg = _T(MSG_WIZARD_CALIBRATION_FAILED); break; case 4: //z cal. - msg = MSG_WIZARD_CALIBRATION_FAILED; + msg = _T(MSG_WIZARD_CALIBRATION_FAILED); break; case 8: msg = _i("Please load PLA filament and then resume Wizard by rebooting the printer.");////MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 @@ -4102,13 +4102,13 @@ void lcd_wizard(int state) { case 9: break; //exit wizard for v2 calibration, which is implemted in lcd_commands (we need lcd_update running) case 11: //we are finished - msg = MSG_WIZARD_DONE; + msg = _T(MSG_WIZARD_DONE); lcd_reset_alert_level(); - lcd_setstatuspgm(WELCOME_MSG); + lcd_setstatuspgm(_T(WELCOME_MSG)); break; default: - msg = MSG_WIZARD_QUIT; + msg = _T(MSG_WIZARD_QUIT); break; } @@ -4125,7 +4125,7 @@ static void lcd_settings_menu() EEPROM_read(EEPROM_SILENT, (uint8_t*)&SilentModeMenu, sizeof(SilentModeMenu)); START_MENU(); - MENU_ITEM(back, MSG_MAIN, lcd_settings_menu_back); + MENU_ITEM(back, _T(MSG_MAIN), lcd_settings_menu_back); MENU_ITEM(submenu, _i("Temperature"), lcd_control_temperature_menu);////MSG_TEMPERATURE c=0 r=0 if (!homing_flag) @@ -4139,10 +4139,10 @@ static void lcd_settings_menu() #ifndef TMC2130 if (!farm_mode) { //dont show in menu if we are in farm mode switch (SilentModeMenu) { - case SILENT_MODE_POWER: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; - case SILENT_MODE_SILENT: MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); break; - case SILENT_MODE_AUTO: MENU_ITEM(function, MSG_AUTO_MODE_ON, lcd_silent_mode_set); break; - default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; // (probably) not needed + case SILENT_MODE_POWER: MENU_ITEM(function, _T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set); break; + case SILENT_MODE_SILENT: MENU_ITEM(function, _T(MSG_SILENT_MODE_ON), lcd_silent_mode_set); break; + case SILENT_MODE_AUTO: MENU_ITEM(function, _T(MSG_AUTO_MODE_ON), lcd_silent_mode_set); break; + default: MENU_ITEM(function, _T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set); break; // (probably) not needed } } #endif //TMC2130 @@ -4153,16 +4153,16 @@ static void lcd_settings_menu() if (fsensor_not_responding){ // Filament sensor not working MENU_ITEM(function, _i("Fil. sensor [N/A]"), lcd_fsensor_state_set);////MSG_FSENSOR_NA c=0 r=0 - MENU_ITEM(function, MSG_FSENS_AUTOLOAD_NA, lcd_fsensor_fail); + MENU_ITEM(function, _T(MSG_FSENS_AUTOLOAD_NA), lcd_fsensor_fail); } else{ // Filament sensor turned off, working, no problems - MENU_ITEM(function, MSG_FSENSOR_OFF, lcd_fsensor_state_set); - MENU_ITEM(function, MSG_FSENS_AUTOLOAD_NA, lcd_filament_autoload_info); + MENU_ITEM(function, _T(MSG_FSENSOR_OFF), lcd_fsensor_state_set); + MENU_ITEM(function, _T(MSG_FSENS_AUTOLOAD_NA), lcd_filament_autoload_info); } } else { // Filament sensor turned on, working, no problems - MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set); + MENU_ITEM(function, _T(MSG_FSENSOR_ON), lcd_fsensor_state_set); if ((filament_autoload_enabled == true)) { MENU_ITEM(function, _i("F. autoload [on]"), lcd_set_filament_autoload);////MSG_FSENS_AUTOLOAD_ON c=17 r=1 @@ -4186,14 +4186,14 @@ static void lcd_settings_menu() if(!farm_mode) { //*** MaR::180416_01a - if (SilentModeMenu == SILENT_MODE_NORMAL) MENU_ITEM(function, MSG_STEALTH_MODE_OFF, lcd_silent_mode_set); - else MENU_ITEM(function, MSG_STEALTH_MODE_ON, lcd_silent_mode_set); + if (SilentModeMenu == SILENT_MODE_NORMAL) MENU_ITEM(function, _T(MSG_STEALTH_MODE_OFF), lcd_silent_mode_set); + else MENU_ITEM(function, _T(MSG_STEALTH_MODE_ON), lcd_silent_mode_set); if (SilentModeMenu == SILENT_MODE_NORMAL) { - if (CrashDetectMenu == 0) MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set); - else MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set); + if (CrashDetectMenu == 0) MENU_ITEM(function, _T(MSG_CRASHDETECT_OFF), lcd_crash_mode_set); + else MENU_ITEM(function, _T(MSG_CRASHDETECT_ON), lcd_crash_mode_set); } - else MENU_ITEM(submenu, MSG_CRASHDETECT_NA, lcd_crash_mode_info); + else MENU_ITEM(submenu, _T(MSG_CRASHDETECT_NA), lcd_crash_mode_info); } MENU_ITEM_EDIT(wfac, _i("E-correct"), &tmc2130_wave_fac[E_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 #endif //TMC2130 @@ -4215,7 +4215,7 @@ static void lcd_settings_menu() if (!isPrintPaused && !homing_flag) { - MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z); + MENU_ITEM(submenu, _T(MSG_BABYSTEP_Z), lcd_babystep_z); } MENU_ITEM(submenu, _i("Select language"), lcd_language_menu);////MSG_LANGUAGE_SELECT c=0 r=0 @@ -4472,7 +4472,7 @@ static void lcd_experimantal_menu_disable_all() static void lcd_experimantal_menu() { START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); MENU_ITEM(function, PSTR("All Xfeatures off"), lcd_experimantal_menu_disable_all); MENU_ITEM(submenu, PSTR("Homing accuracy"), lcd_homing_accuracy_menu); MENU_ITEM(submenu, PSTR("uStep resolution"), lcd_ustep_resolution_menu); @@ -4485,22 +4485,22 @@ static void lcd_experimantal_menu() static void lcd_calibration_menu() { START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); if (!isPrintPaused) { MENU_ITEM(function, _i("Wizard"), lcd_wizard);////MSG_WIZARD c=17 r=1 MENU_ITEM(submenu, _i("First layer cal."), lcd_v2_calibration);////MSG_V2_CALIBRATION c=17 r=1 - MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 W")); + MENU_ITEM(gcode, _T(MSG_AUTO_HOME), PSTR("G28 W")); MENU_ITEM(function, _i("Selftest "), lcd_selftest_v);////MSG_SELFTEST c=0 r=0 #ifdef MK1BP // MK1 // "Calibrate Z" - MENU_ITEM(gcode, MSG_HOMEYZ, PSTR("G28 Z")); + MENU_ITEM(gcode, _T(MSG_HOMEYZ), PSTR("G28 Z")); #else //MK1BP // MK2 MENU_ITEM(function, _i("Calibrate XYZ"), lcd_mesh_calibration);////MSG_CALIBRATE_BED c=0 r=0 // "Calibrate Z" with storing the reference values to EEPROM. - MENU_ITEM(submenu, MSG_HOMEYZ, lcd_mesh_calibration_z); + MENU_ITEM(submenu, _T(MSG_HOMEYZ), lcd_mesh_calibration_z); #ifndef SNMM //MENU_ITEM(function, _i("Calibrate E"), lcd_calibrate_extruder);////MSG_CALIBRATE_E c=20 r=1 #endif @@ -4529,7 +4529,7 @@ void lcd_mylang_top(int hlaska) { lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,0); - lcd_printPGM(MSG_ALL[hlaska-1][LANGUAGE_SELECT]); + lcd_printPGM(_T(MSG_ALL)[hlaska-1][LANGUAGE_SELECT]); } void lcd_mylang_drawmenu(int cursor) { @@ -4539,17 +4539,17 @@ void lcd_mylang_drawmenu(int cursor) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(1, 1); - lcd_printPGM(MSG_ALL[first][LANGUAGE_NAME]); + lcd_printPGM(_T(MSG_ALL)[first][LANGUAGE_NAME]); lcd.setCursor(0, 2); lcd.print(" "); lcd.setCursor(1, 2); - lcd_printPGM(MSG_ALL[first+1][LANGUAGE_NAME]); + lcd_printPGM(_T(MSG_ALL)[first+1][LANGUAGE_NAME]); lcd.setCursor(0, 3); lcd.print(" "); lcd.setCursor(1, 3); - lcd_printPGM(MSG_ALL[first+2][LANGUAGE_NAME]); + lcd_printPGM(_T(MSG_ALL)[first+2][LANGUAGE_NAME]); if (cursor==1) lcd.setCursor(0, 1); if (cursor>1 && cursor"); - lcd_print_at_PGM(1,1,MSG_ALL); + lcd_print_at_PGM(1,1,_T(MSG_ALL)); lcd_print_at_PGM(1,2,_i("Used during print"));////MSG_USED c=19 r=1 lcd_print_at_PGM(1,3,_i("Current"));////MSG_CURRENT c=19 r=1 char cursor_pos = 1; @@ -4876,17 +4876,17 @@ char choose_extruder_menu() { enc_dif = encoderDiff; lcd_implementation_clear(); - lcd_printPGM(MSG_CHOOSE_EXTRUDER); + lcd_printPGM(_T(MSG_CHOOSE_EXTRUDER)); lcd.setCursor(0, 1); lcd.print(">"); for (int i = 0; i < 3; i++) { - lcd_print_at_PGM(1, i + 1, MSG_EXTRUDER); + lcd_print_at_PGM(1, i + 1, _T(MSG_EXTRUDER)); } KEEPALIVE_STATE(PAUSED_FOR_USER); while (1) { for (int i = 0; i < 3; i++) { - lcd.setCursor(2 + strlen_P(MSG_EXTRUDER), i+1); + lcd.setCursor(2 + strlen_P(_T(MSG_EXTRUDER)), i+1); lcd.print(first + i + 1); } @@ -4909,9 +4909,9 @@ char choose_extruder_menu() { if (first < items_no - 3) { first++; lcd_implementation_clear(); - lcd_printPGM(MSG_CHOOSE_EXTRUDER); + lcd_printPGM(_T(MSG_CHOOSE_EXTRUDER)); for (int i = 0; i < 3; i++) { - lcd_print_at_PGM(1, i + 1, MSG_EXTRUDER); + lcd_print_at_PGM(1, i + 1, _T(MSG_EXTRUDER)); } } } @@ -4921,9 +4921,9 @@ char choose_extruder_menu() { if (first > 0) { first--; lcd_implementation_clear(); - lcd_printPGM(MSG_CHOOSE_EXTRUDER); + lcd_printPGM(_T(MSG_CHOOSE_EXTRUDER)); for (int i = 0; i < 3; i++) { - lcd_print_at_PGM(1, i + 1, MSG_EXTRUDER); + lcd_print_at_PGM(1, i + 1, _T(MSG_EXTRUDER)); } } } @@ -5127,10 +5127,10 @@ static int get_ext_nr() { //reads multiplexer input pins and return current extr void display_loading() { switch (snmm_extruder) { - case 1: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T1); break; - case 2: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T2); break; - case 3: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T3); break; - default: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T0); break; + case 1: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T1)); break; + case 2: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T2)); break; + case 3: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T3)); break; + default: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T0)); break; } } @@ -5143,10 +5143,10 @@ void extr_adj(int extruder) //loading filament for SNMM lcd_implementation_clear(); lcd.setCursor(0, 0); switch (extruder) { - case 1: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T1); break; - case 2: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T2); break; - case 3: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T3); break; - default: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T0); break; + case 1: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T1)); break; + case 2: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T2)); break; + case 3: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T3)); break; + default: lcd_display_message_fullscreen_P(_T(MSG_FILAMENT_LOADING_T0)); break; } KEEPALIVE_STATE(PAUSED_FOR_USER); do{ @@ -5162,11 +5162,11 @@ void extr_adj(int extruder) //loading filament for SNMM //extr_mov(BOWDEN_LENGTH/2.f, 500); extr_mov(bowden_length[extruder], 500); lcd_implementation_clear(); - lcd.setCursor(0, 0); lcd_printPGM(MSG_LOADING_FILAMENT); - if(strlen(MSG_LOADING_FILAMENT)>18) lcd.setCursor(0, 1); + lcd.setCursor(0, 0); lcd_printPGM(_T(MSG_LOADING_FILAMENT)); + if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1); else lcd.print(" "); lcd.print(snmm_extruder + 1); - lcd.setCursor(0, 2); lcd_printPGM(MSG_PLEASE_WAIT); + lcd.setCursor(0, 2); lcd_printPGM(_T(MSG_PLEASE_WAIT)); st_synchronize(); max_feedrate[E_AXIS] = 50; lcd_update_enable(true); @@ -5184,10 +5184,10 @@ void extr_unload() { //unloads filament lcd_implementation_clear(); lcd_display_message_fullscreen_P(PSTR("")); max_feedrate[E_AXIS] = 50; - lcd.setCursor(0, 0); lcd_printPGM(MSG_UNLOADING_FILAMENT); + lcd.setCursor(0, 0); lcd_printPGM(_T(MSG_UNLOADING_FILAMENT)); lcd.print(" "); lcd.print(snmm_extruder + 1); - lcd.setCursor(0, 2); lcd_printPGM(MSG_PLEASE_WAIT); + lcd.setCursor(0, 2); lcd_printPGM(_T(MSG_PLEASE_WAIT)); if (current_position[Z_AXIS] < 15) { current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder); @@ -5235,9 +5235,9 @@ void extr_unload() { //unloads filament lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_implementation_clear(); @@ -5304,9 +5304,9 @@ void extr_unload_all() { else { lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_implementation_clear(); lcd_return_to_status(); @@ -5328,9 +5328,9 @@ void extr_unload_used() { else { lcd_implementation_clear(); lcd.setCursor(0, 0); - lcd_printPGM(MSG_ERROR); + lcd_printPGM(_T(MSG_ERROR)); lcd.setCursor(0, 2); - lcd_printPGM(MSG_PREHEAT_NOZZLE); + lcd_printPGM(_T(MSG_PREHEAT_NOZZLE)); delay(2000); lcd_implementation_clear(); lcd_return_to_status(); @@ -5360,7 +5360,7 @@ static void extr_unload_3() { static void fil_load_menu() { START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); MENU_ITEM(function, _i("Load all"), load_all);////MSG_LOAD_ALL c=0 r=0 MENU_ITEM(function, _i("Load filament 1"), extr_adj_0);////MSG_LOAD_FILAMENT_1 c=17 r=0 MENU_ITEM(function, _i("Load filament 2"), extr_adj_1);////MSG_LOAD_FILAMENT_2 c=17 r=0 @@ -5373,7 +5373,7 @@ static void fil_load_menu() static void fil_unload_menu() { START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); MENU_ITEM(function, _i("Unload all"), extr_unload_all);////MSG_UNLOAD_ALL c=0 r=0 MENU_ITEM(function, _i("Unload filament 1"), extr_unload_0);////MSG_UNLOAD_FILAMENT_1 c=17 r=0 MENU_ITEM(function, _i("Unload filament 2"), extr_unload_1);////MSG_UNLOAD_FILAMENT_2 c=17 r=0 @@ -5385,7 +5385,7 @@ static void fil_unload_menu() static void change_extr_menu(){ START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); MENU_ITEM(function, _i("Extruder 1"), extr_change_0);////MSG_EXTRUDER_1 c=17 r=1 MENU_ITEM(function, _i("Extruder 2"), extr_change_1);////MSG_EXTRUDER_2 c=17 r=1 MENU_ITEM(function, _i("Extruder 3"), extr_change_2);////MSG_EXTRUDER_3 c=17 r=1 @@ -5580,9 +5580,9 @@ void lcd_confirm_print() lcd.setCursor(0, 2); lcd.print(" "); lcd.setCursor(0, 3); lcd.print(" "); lcd.setCursor(2, 2); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(2, 3); - lcd_printPGM(MSG_NO); + lcd_printPGM(_T(MSG_NO)); lcd.setCursor(0, 1 + cursor_pos); lcd.print(">"); delay(100); @@ -5636,7 +5636,7 @@ static void lcd_main_menu() // Majkl superawesome menu - MENU_ITEM(back, MSG_WATCH, 0); + MENU_ITEM(back, _T(MSG_WATCH), 0); #ifdef RESUME_DEBUG if (!saved_printing) @@ -5663,7 +5663,7 @@ static void lcd_main_menu() if (card.filename[0] == '/') { #if SDCARDDETECT == -1 - MENU_ITEM(function, MSG_REFRESH, lcd_sd_refresh); + MENU_ITEM(function, _T(MSG_REFRESH), lcd_sd_refresh); #endif } else { MENU_ITEM(function, PSTR(LCD_STR_FOLDER ".."), lcd_sd_updir); @@ -5680,10 +5680,10 @@ static void lcd_main_menu() #endif if (card.filenameIsDir) { - MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename); + MENU_ITEM(sddirectory, _T(MSG_CARD_MENU), card.filename, card.longFilename); } else { - MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename); + MENU_ITEM(sdfile, _T(MSG_CARD_MENU), card.filename, card.longFilename); @@ -5701,7 +5701,7 @@ static void lcd_main_menu() if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL)) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag) { - MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);//8 + MENU_ITEM(submenu, _T(MSG_BABYSTEP_Z), lcd_babystep_z);//8 } @@ -5727,18 +5727,18 @@ static void lcd_main_menu() { MENU_ITEM(function, _i("Resume print"), lcd_sdcard_resume);////MSG_RESUME_PRINT c=0 r=0 } - MENU_ITEM(submenu, MSG_STOP_PRINT, lcd_sdcard_stop); + MENU_ITEM(submenu, _T(MSG_STOP_PRINT), lcd_sdcard_stop); } } else if (lcd_commands_type == LCD_COMMAND_V2_CAL && mesh_bed_leveling_flag == false && homing_flag == false) { - //MENU_ITEM(submenu, MSG_STOP_PRINT, lcd_sdcard_stop); + //MENU_ITEM(submenu, _T(MSG_STOP_PRINT), lcd_sdcard_stop); } else { if (!is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL)) { //if (farm_mode) MENU_ITEM(submenu, MSG_FARM_CARD_MENU, lcd_farm_sdcard_menu); - /*else*/ MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu); + /*else*/ MENU_ITEM(submenu, _T(MSG_CARD_MENU), lcd_sdcard_menu); } #if SDCARDDETECT < 1 MENU_ITEM(gcode, _i("Change SD card"), PSTR("M21")); // SD-card changed by user////MSG_CNG_SDCARD c=0 r=0 @@ -5770,16 +5770,16 @@ static void lcd_main_menu() MENU_ITEM(submenu, _i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=17 r=0 else #endif //PAT9125 - MENU_ITEM(function, MSG_LOAD_FILAMENT, lcd_LoadFilament); - MENU_ITEM(submenu, MSG_UNLOAD_FILAMENT, lcd_unLoadFilament); + MENU_ITEM(function, _T(MSG_LOAD_FILAMENT), lcd_LoadFilament); + MENU_ITEM(submenu, _T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament); #endif #ifdef SNMM - MENU_ITEM(submenu, MSG_LOAD_FILAMENT, fil_load_menu); - MENU_ITEM(submenu, MSG_UNLOAD_FILAMENT, fil_unload_menu); + MENU_ITEM(submenu, _T(MSG_LOAD_FILAMENT), fil_load_menu); + MENU_ITEM(submenu, _T(MSG_UNLOAD_FILAMENT), fil_unload_menu); MENU_ITEM(submenu, _i("Change extruder"), change_extr_menu);////MSG_CHANGE_EXTR c=20 r=1 #endif - MENU_ITEM(submenu, MSG_SETTINGS, lcd_settings_menu); - if(!isPrintPaused) MENU_ITEM(submenu, MSG_MENU_CALIBRATION, lcd_calibration_menu); + MENU_ITEM(submenu, _T(MSG_SETTINGS), lcd_settings_menu); + if(!isPrintPaused) MENU_ITEM(submenu, _T(MSG_MENU_CALIBRATION), lcd_calibration_menu); #ifdef EXPERIMENTAL_FEATURES MENU_ITEM(submenu, PSTR("Experimantal"), lcd_experimantal_menu); @@ -5866,7 +5866,7 @@ static void lcd_colorprint_change() { custom_message = true; custom_message_type = 2; //just print status message - lcd_setstatuspgm(MSG_FINISHING_MOVEMENTS); + lcd_setstatuspgm(_T(MSG_FINISHING_MOVEMENTS)); lcd_return_to_status(); lcdDrawUpdate = 3; } @@ -5888,25 +5888,25 @@ static void lcd_tune_menu() START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); //1 + MENU_ITEM(back, _T(MSG_MAIN), 0); //1 MENU_ITEM_EDIT(int3, _i("Speed"), &feedmultiply, 10, 999);//2////MSG_SPEED c=0 r=0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 10);//3 - MENU_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 10);//4 + MENU_ITEM_EDIT(int3, _T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10);//3 + MENU_ITEM_EDIT(int3, _T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 10);//4 - MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);//5 + MENU_ITEM_EDIT(int3, _T(MSG_FAN_SPEED), &fanSpeed, 0, 255);//5 MENU_ITEM_EDIT(int3, _i("Flow"), &extrudemultiply, 10, 999);//6////MSG_FLOW c=0 r=0 #ifdef FILAMENTCHANGEENABLE - MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 + MENU_ITEM(function, _T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//7 #endif #ifndef DEBUG_DISABLE_FSENSORCHECK #ifdef PAT9125 if (FSensorStateMenu == 0) { - MENU_ITEM(function, MSG_FSENSOR_OFF, lcd_fsensor_state_set); + MENU_ITEM(function, _T(MSG_FSENSOR_OFF), lcd_fsensor_state_set); } else { - MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set); + MENU_ITEM(function, _T(MSG_FSENSOR_ON), lcd_fsensor_state_set); } #endif //PAT9125 #endif //DEBUG_DISABLE_FSENSORCHECK @@ -5915,23 +5915,23 @@ static void lcd_tune_menu() if(!farm_mode) { //*** MaR::180416_01b - if (SilentModeMenu == SILENT_MODE_NORMAL) MENU_ITEM(function, MSG_STEALTH_MODE_OFF, lcd_silent_mode_set); - else MENU_ITEM(function, MSG_STEALTH_MODE_ON, lcd_silent_mode_set); + if (SilentModeMenu == SILENT_MODE_NORMAL) MENU_ITEM(function, _T(MSG_STEALTH_MODE_OFF), lcd_silent_mode_set); + else MENU_ITEM(function, _T(MSG_STEALTH_MODE_ON), lcd_silent_mode_set); if (SilentModeMenu == SILENT_MODE_NORMAL) { - if (CrashDetectMenu == 0) MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set); - else MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set); + if (CrashDetectMenu == 0) MENU_ITEM(function, _T(MSG_CRASHDETECT_OFF), lcd_crash_mode_set); + else MENU_ITEM(function, _T(MSG_CRASHDETECT_ON), lcd_crash_mode_set); } - else MENU_ITEM(submenu, MSG_CRASHDETECT_NA, lcd_crash_mode_info); + else MENU_ITEM(submenu, _T(MSG_CRASHDETECT_NA), lcd_crash_mode_info); } #else //TMC2130 if (!farm_mode) { //dont show in menu if we are in farm mode switch (SilentModeMenu) { - case SILENT_MODE_POWER: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; - case SILENT_MODE_SILENT: MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); break; - case SILENT_MODE_AUTO: MENU_ITEM(function, MSG_AUTO_MODE_ON, lcd_silent_mode_set); break; - default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; // (probably) not needed + case SILENT_MODE_POWER: MENU_ITEM(function, _T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set); break; + case SILENT_MODE_SILENT: MENU_ITEM(function, _T(MSG_SILENT_MODE_ON), lcd_silent_mode_set); break; + case SILENT_MODE_AUTO: MENU_ITEM(function, _T(MSG_AUTO_MODE_ON), lcd_silent_mode_set); break; + default: MENU_ITEM(function, _T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set); break; // (probably) not needed } } #endif //TMC2130 @@ -5953,9 +5953,9 @@ static void lcd_control_temperature_menu() #endif START_MENU(); - MENU_ITEM(back, MSG_SETTINGS, 0); + MENU_ITEM(back, _T(MSG_SETTINGS), 0); #if TEMP_SENSOR_0 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); + MENU_ITEM_EDIT(int3, _T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); #endif #if TEMP_SENSOR_1 != 0 MENU_ITEM_EDIT(int3, _i("Nozzle2"), &target_temperature[1], 0, HEATER_1_MAXTEMP - 10);////MSG_NOZZLE1 c=0 r=0 @@ -5964,9 +5964,9 @@ static void lcd_control_temperature_menu() MENU_ITEM_EDIT(int3, _i("Nozzle3"), &target_temperature[2], 0, HEATER_2_MAXTEMP - 10);////MSG_NOZZLE2 c=0 r=0 #endif #if TEMP_SENSOR_BED != 0 - MENU_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 3); + MENU_ITEM_EDIT(int3, _T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 3); #endif - MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); + MENU_ITEM_EDIT(int3, _T(MSG_FAN_SPEED), &fanSpeed, 0, 255); #if defined AUTOTEMP && (TEMP_SENSOR_0 != 0) MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled); MENU_ITEM_EDIT(float3, _i(" MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 10);02 Min"), &autotemp_min, 0, HEATER_0_MAXTEMP - 10);////MSG_MIN c=0 r=0 @@ -6006,7 +6006,7 @@ void lcd_print_stop() { } // Clean the input command queue. cmdqueue_reset(); - lcd_setstatuspgm(MSG_PRINT_ABORTED); + lcd_setstatuspgm(_T(MSG_PRINT_ABORTED)); lcd_update(2); card.sdprinting = false; card.closefile(); @@ -6031,11 +6031,11 @@ void lcd_sdcard_stop() { lcd.setCursor(0, 0); - lcd_printPGM(MSG_STOP_PRINT); + lcd_printPGM(_T(MSG_STOP_PRINT)); lcd.setCursor(2, 2); - lcd_printPGM(MSG_NO); + lcd_printPGM(_T(MSG_NO)); lcd.setCursor(2, 3); - lcd_printPGM(MSG_YES); + lcd_printPGM(_T(MSG_YES)); lcd.setCursor(0, 2); lcd.print(" "); lcd.setCursor(0, 3); lcd.print(" "); @@ -6102,12 +6102,12 @@ void lcd_sdcard_menu() uint16_t fileCnt = card.getnrfilenames(); START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); card.getWorkDirName(); if (card.filename[0] == '/') { #if SDCARDDETECT == -1 - MENU_ITEM(function, MSG_REFRESH, lcd_sd_refresh); + MENU_ITEM(function, _T(MSG_REFRESH), lcd_sd_refresh); #endif } else { MENU_ITEM(function, PSTR(LCD_STR_FOLDER ".."), lcd_sd_updir); @@ -6132,9 +6132,9 @@ void lcd_sdcard_menu() #endif if (card.filenameIsDir) - MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename); + MENU_ITEM(sddirectory, _T(MSG_CARD_MENU), card.filename, card.longFilename); else - MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename); + MENU_ITEM(sdfile, _T(MSG_CARD_MENU), card.filename, card.longFilename); } else { MENU_ITEM_DUMMY(); } @@ -6169,12 +6169,12 @@ void lcd_sdcard_menu() uint16_t fileCnt = card.getnrfilenames(); START_MENU(); - MENU_ITEM(back, MSG_MAIN, 0); + MENU_ITEM(back, _T(MSG_MAIN), 0); card.getWorkDirName(); if (card.filename[0] == '/') { #if SDCARDDETECT == -1 - MENU_ITEM(function, MSG_REFRESH, lcd_sd_refresh); + MENU_ITEM(function, _T(MSG_REFRESH), lcd_sd_refresh); #endif } else { @@ -6194,11 +6194,11 @@ void lcd_sdcard_menu() #endif if (card.filenameIsDir) { - MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename); + MENU_ITEM(sddirectory, _T(MSG_CARD_MENU), card.filename, card.longFilename); } else { - MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, description[i]); + MENU_ITEM(sdfile, _T(MSG_CARD_MENU), card.filename, description[i]); } } else { @@ -6472,7 +6472,7 @@ bool lcd_selftest() } else { - LCD_ALERTMESSAGERPGM(MSG_SELFTEST_FAILED); + LCD_ALERTMESSAGERPGM(_T(MSG_SELFTEST_FAILED)); } #ifdef TMC2130 FORCE_HIGH_POWER_END; @@ -6916,19 +6916,19 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * lcd.setCursor(0, 2); lcd_printPGM(_i("Bed / Heater"));////MSG_SELFTEST_BEDHEATER c=0 r=0 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_WIRINGERROR); + lcd_printPGM(_T(MSG_SELFTEST_WIRINGERROR)); break; case 3: lcd.setCursor(0, 2); lcd_printPGM(_i("Endstops"));////MSG_SELFTEST_ENDSTOPS c=0 r=0 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_WIRINGERROR); + lcd_printPGM(_T(MSG_SELFTEST_WIRINGERROR)); lcd.setCursor(17, 3); lcd.print(_error_1); break; case 4: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_MOTOR); + lcd_printPGM(_T(MSG_SELFTEST_MOTOR)); lcd.setCursor(18, 2); lcd.print(_error_1); lcd.setCursor(0, 3); @@ -6940,23 +6940,23 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * lcd.setCursor(0, 2); lcd_printPGM(_i("Endstop not hit"));////MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_MOTOR); + lcd_printPGM(_T(MSG_SELFTEST_MOTOR)); lcd.setCursor(18, 3); lcd.print(_error_1); break; case 6: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_COOLING_FAN); + lcd_printPGM(_T(MSG_SELFTEST_COOLING_FAN)); lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_WIRINGERROR); + lcd_printPGM(_T(MSG_SELFTEST_WIRINGERROR)); lcd.setCursor(18, 3); lcd.print(_error_1); break; case 7: lcd.setCursor(0, 2); - lcd_printPGM(MSG_SELFTEST_EXTRUDER_FAN); + lcd_printPGM(_T(MSG_SELFTEST_EXTRUDER_FAN)); lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_WIRINGERROR); + lcd_printPGM(_T(MSG_SELFTEST_WIRINGERROR)); lcd.setCursor(18, 3); lcd.print(_error_1); break; @@ -6964,7 +6964,7 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * lcd.setCursor(0, 2); lcd_printPGM(_i("Loose pulley"));////MSG_LOOSE_PULLEY c=20 r=1 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_MOTOR); + lcd_printPGM(_T(MSG_SELFTEST_MOTOR)); lcd.setCursor(18, 3); lcd.print(_error_1); break; @@ -6988,7 +6988,7 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * lcd.setCursor(0, 2); lcd_printPGM(_i("Filament sensor"));////MSG_FILAMENT_SENSOR c=20 r=0 lcd.setCursor(0, 3); - lcd_printPGM(MSG_SELFTEST_WIRINGERROR); + lcd_printPGM(_T(MSG_SELFTEST_WIRINGERROR)); break; } @@ -7001,7 +7001,7 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * manage_inactivity(); } while (!lcd_clicked()); - LCD_ALERTMESSAGERPGM(MSG_SELFTEST_FAILED); + LCD_ALERTMESSAGERPGM(_T(MSG_SELFTEST_FAILED)); lcd_return_to_status(); } @@ -7024,32 +7024,32 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite) bool _result = check_opposite; lcd_implementation_clear(); - lcd.setCursor(0, 0); lcd_printPGM(MSG_SELFTEST_FAN); + lcd.setCursor(0, 0); lcd_printPGM(_T(MSG_SELFTEST_FAN)); switch (_fan) { case 0: // extruder cooling fan lcd.setCursor(0, 1); - if(check_opposite == true) lcd_printPGM(MSG_SELFTEST_COOLING_FAN); - else lcd_printPGM(MSG_SELFTEST_EXTRUDER_FAN); + if(check_opposite == true) lcd_printPGM(_T(MSG_SELFTEST_COOLING_FAN)); + else lcd_printPGM(_T(MSG_SELFTEST_EXTRUDER_FAN)); SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN); WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1); break; case 1: // object cooling fan lcd.setCursor(0, 1); - if (check_opposite == true) lcd_printPGM(MSG_SELFTEST_EXTRUDER_FAN); - else lcd_printPGM(MSG_SELFTEST_COOLING_FAN); + if (check_opposite == true) lcd_printPGM(_T(MSG_SELFTEST_EXTRUDER_FAN)); + else lcd_printPGM(_T(MSG_SELFTEST_COOLING_FAN)); SET_OUTPUT(FAN_PIN); analogWrite(FAN_PIN, 255); break; } delay(500); - lcd.setCursor(1, 2); lcd_printPGM(MSG_SELFTEST_FAN_YES); + lcd.setCursor(1, 2); lcd_printPGM(_T(MSG_SELFTEST_FAN_YES)); lcd.setCursor(0, 3); lcd.print(">"); - lcd.setCursor(1, 3); lcd_printPGM(MSG_SELFTEST_FAN_NO); + lcd.setCursor(1, 3); lcd_printPGM(_T(MSG_SELFTEST_FAN_NO)); int8_t enc_dif = 0; KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -7075,17 +7075,17 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite) if (enc_dif > encoderDiff) { _result = !check_opposite; lcd.setCursor(0, 2); lcd.print(">"); - lcd.setCursor(1, 2); lcd_printPGM(MSG_SELFTEST_FAN_YES); + lcd.setCursor(1, 2); lcd_printPGM(_T(MSG_SELFTEST_FAN_YES)); lcd.setCursor(0, 3); lcd.print(" "); - lcd.setCursor(1, 3); lcd_printPGM(MSG_SELFTEST_FAN_NO); + lcd.setCursor(1, 3); lcd_printPGM(_T(MSG_SELFTEST_FAN_NO)); } if (enc_dif < encoderDiff) { _result = check_opposite; lcd.setCursor(0, 2); lcd.print(" "); - lcd.setCursor(1, 2); lcd_printPGM(MSG_SELFTEST_FAN_YES); + lcd.setCursor(1, 2); lcd_printPGM(_T(MSG_SELFTEST_FAN_YES)); lcd.setCursor(0, 3); lcd.print(">"); - lcd.setCursor(1, 3); lcd_printPGM(MSG_SELFTEST_FAN_NO); + lcd.setCursor(1, 3); lcd_printPGM(_T(MSG_SELFTEST_FAN_NO)); } enc_dif = 0; encoderDiff = 0; @@ -7186,20 +7186,20 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo lcd.setCursor(0, 0); - if (_step == -1) lcd_printPGM(MSG_SELFTEST_FAN); - if (_step == 0) lcd_printPGM(MSG_SELFTEST_FAN); - if (_step == 1) lcd_printPGM(MSG_SELFTEST_FAN); + if (_step == -1) lcd_printPGM(_T(MSG_SELFTEST_FAN)); + if (_step == 0) lcd_printPGM(_T(MSG_SELFTEST_FAN)); + if (_step == 1) lcd_printPGM(_T(MSG_SELFTEST_FAN)); if (_step == 2) lcd_printPGM(_i("Checking endstops"));////MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 if (_step == 3) lcd_printPGM(_i("Checking hotend "));////MSG_SELFTEST_CHECK_HOTEND c=20 r=0 if (_step == 4) lcd_printPGM(_i("Checking X axis "));////MSG_SELFTEST_CHECK_X c=20 r=0 if (_step == 5) lcd_printPGM(_i("Checking Y axis "));////MSG_SELFTEST_CHECK_Y c=20 r=0 if (_step == 6) lcd_printPGM(_i("Checking Z axis "));////MSG_SELFTEST_CHECK_Z c=20 r=0 - if (_step == 7) lcd_printPGM(MSG_SELFTEST_CHECK_BED); - if (_step == 8) lcd_printPGM(MSG_SELFTEST_CHECK_BED); - if (_step == 9) lcd_printPGM(MSG_SELFTEST_CHECK_FSENSOR); - if (_step == 10) lcd_printPGM(MSG_SELFTEST_CHECK_FSENSOR); + if (_step == 7) lcd_printPGM(_T(MSG_SELFTEST_CHECK_BED)); + if (_step == 8) lcd_printPGM(_T(MSG_SELFTEST_CHECK_BED)); + if (_step == 9) lcd_printPGM(_T(MSG_SELFTEST_CHECK_FSENSOR)); + if (_step == 10) lcd_printPGM(_T(MSG_SELFTEST_CHECK_FSENSOR)); if (_step == 11) lcd_printPGM(_i("All correct "));////MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 - if (_step == 12) lcd_printPGM(MSG_SELFTEST_FAILED); + if (_step == 12) lcd_printPGM(_T(MSG_SELFTEST_FAILED)); if (_step == 13) lcd_printPGM(PSTR("Calibrating home")); lcd.setCursor(0, 1); @@ -7329,7 +7329,7 @@ static bool check_file(const char* filename) { } card.printingHasFinished(); - strncpy_P(lcd_status_message, WELCOME_MSG, LCD_WIDTH); + strncpy_P(lcd_status_message, _T(WELCOME_MSG), LCD_WIDTH); lcd_finishstatus(); return result; diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index 42d96c02..00fa8528 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -934,22 +934,22 @@ if (print_sd_status) { case 1: lcd.setCursor(0, 3); - lcd_printPGM(MSG_HEATING); + lcd_printPGM(_T(MSG_HEATING)); break; case 2: lcd.setCursor(0, 3); - lcd_printPGM(MSG_HEATING_COMPLETE); + lcd_printPGM(_T(MSG_HEATING_COMPLETE)); heating_status = 0; heating_status_counter = 0; custom_message = false; break; case 3: lcd.setCursor(0, 3); - lcd_printPGM(MSG_BED_HEATING); + lcd_printPGM(_T(MSG_BED_HEATING)); break; case 4: lcd.setCursor(0, 3); - lcd_printPGM(MSG_BED_DONE); + lcd_printPGM(_T(MSG_BED_DONE)); heating_status = 0; heating_status_counter = 0; custom_message = false; @@ -976,8 +976,8 @@ if (print_sd_status) { if (custom_message_state == 3) { - lcd_printPGM(WELCOME_MSG); - lcd_setstatuspgm(WELCOME_MSG); + lcd_printPGM(_T(WELCOME_MSG)); + lcd_setstatuspgm(_T(WELCOME_MSG)); custom_message = false; custom_message_type = 0; } @@ -1012,7 +1012,7 @@ if (print_sd_status) if (custom_message_type == 4) { char progress[4]; lcd.setCursor(0, 3); - lcd_printPGM(MSG_TEMP_CALIBRATION); + lcd_printPGM(_T(MSG_TEMP_CALIBRATION)); lcd.setCursor(12, 3); sprintf(progress, "%d/6", custom_message_state); lcd.print(progress); diff --git a/lang_upgrade/fix_1.out b/lang_upgrade/fix_1.out new file mode 100644 index 00000000..78341b88 --- /dev/null +++ b/lang_upgrade/fix_1.out @@ -0,0 +1,96 @@ +MSG_ALL OK +MSG_AUTO_HOME OK +MSG_AUTO_MODE_ON OK +MSG_BABYSTEP_Z OK +MSG_BABYSTEP_Z_NOT_SET OK +MSG_BED OK +MSG_BED_DONE OK +MSG_BED_HEATING OK +MSG_BED_LEVELING_FAILED_POINT_LOW OK +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED OK +MSG_CALIBRATE_Z_AUTO OK +MSG_CARD_MENU OK +MSG_CONFIRM_NOZZLE_CLEAN OK +MSG_COOLDOWN OK +MSG_CRASH_DETECTED OK +MSG_CRASHDETECT_NA OK +MSG_CRASHDETECT_OFF OK +MSG_CRASHDETECT_ON OK +MSG_ENDSTOP_HIT OK +MSG_ENDSTOP_OPEN OK +MSG_ENDSTOPS_HIT OK +MSG_Enqueing OK +MSG_ERR_STOPPED OK +MSG_ERROR OK +MSG_EXTRUDER OK +MSG_FAN_SPEED OK +MSG_FILAMENT_CLEAN OK +MSG_FILAMENT_LOADING_T0 OK +MSG_FILAMENT_LOADING_T1 OK +MSG_FILAMENT_LOADING_T2 OK +MSG_FILAMENT_LOADING_T3 OK +MSG_FILAMENTCHANGE OK +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 OK +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 OK +MSG_FINISHING_MOVEMENTS OK +MSG_FOLLOW_CALIBRATION_FLOW OK +MSG_FSENS_AUTOLOAD_NA OK +MSG_FSENSOR_OFF OK +MSG_FSENSOR_ON OK +MSG_HEATING OK +MSG_HEATING_COMPLETE OK +MSG_HOMEYZ OK +MSG_CHOOSE_EXTRUDER OK +MSG_LOAD_FILAMENT OK +MSG_LOADING_FILAMENT OK +MSG_M117_V2_CALIBRATION OK +MSG_MAIN OK +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 OK +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 OK +MSG_MENU_CALIBRATION OK +MSG_NO OK +MSG_NOZZLE OK +MSG_OK OK +MSG_PAPER OK +MSG_PLACE_STEEL_SHEET OK +MSG_PLEASE_WAIT OK +MSG_POWERUP OK +MSG_PREHEAT_NOZZLE OK +MSG_PRESS_TO_UNLOAD OK +MSG_PRINT_ABORTED OK +MSG_PULL_OUT_FILAMENT OK +MSG_RECOVER_PRINT OK +MSG_REFRESH OK +MSG_REMOVE_STEEL_SHEET OK +MSG_SD_ERR_WRITE_TO_FILE OK +MSG_SD_OPEN_FILE_FAIL OK +MSG_SD_WORKDIR_FAIL OK +MSG_SELFTEST_COOLING_FAN OK +MSG_SELFTEST_EXTRUDER_FAN OK +MSG_SELFTEST_FAILED OK +MSG_SELFTEST_FAN OK +MSG_SELFTEST_FAN_NO OK +MSG_SELFTEST_FAN_YES OK +MSG_SELFTEST_CHECK_BED OK +MSG_SELFTEST_CHECK_FSENSOR OK +MSG_SELFTEST_MOTOR OK +MSG_SELFTEST_WIRINGERROR OK +MSG_SETTINGS OK +MSG_SILENT_MODE_OFF OK +MSG_SILENT_MODE_ON OK +MSG_STEALTH_MODE_OFF OK +MSG_STEALTH_MODE_ON OK +MSG_STEEL_SHEET_CHECK OK +MSG_STOP_PRINT OK +MSG_STOPPED OK +MSG_TEMP_CALIBRATION OK +MSG_TEMP_CALIBRATION_DONE OK +MSG_UNLOAD_FILAMENT OK +MSG_UNLOADING_FILAMENT OK +MSG_WATCH OK +MSG_WIZARD_CALIBRATION_FAILED OK +MSG_WIZARD_DONE OK +MSG_WIZARD_HEATING OK +MSG_WIZARD_QUIT OK +MSG_YES OK +WELCOME_MSG OK diff --git a/lang_upgrade/fix_source_1.sh b/lang_upgrade/fix_source_1.sh new file mode 100644 index 00000000..d5ddbc99 --- /dev/null +++ b/lang_upgrade/fix_source_1.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# fix_source_1.sh - replace in code all usage of localized message constant from messages.h as _T(MSG_xxx) + +if [ -e ./source ]; then + echo 'folder ./source already exists.' + read + exit +fi + +#create target folder +echo 'creating target folder...' +mkdir ./source +#list all source files except *language* and *messages* +files=$(ls ../Firmware/*.c* | grep -v 'language' | grep -v 'messages'; ls ../Firmware/*.h | grep -v 'language' | grep -v 'messages' ) +echo 'copying files...' +cp $files ./source/ +#list all source files in target folder +files=$(ls ./source/*.c*; ls ./source/*.h ) + +#replace source - internatinalized messages used once with _i("TEXT") +echo 'processing msgs_en_used_once.txt' +cat msgs_en_used_more.txt | sed "s/\\\\/\\\\\\\\/g;s/\//\\\\\\\\\//g" | while read name cols rows text; do + if sed -i -E "s/\b$name\b/_T\($name\)/g" $files; then + echo "$name OK" + else + echo "$name NG!" + fi +done | tee fix_1.out + +echo "fix1 finished... press key" + +read +exit From 1f7324ea9af0d4df0f3e0567195bec1d743171da Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 23 May 2018 20:57:25 +0200 Subject: [PATCH 36/68] New ML support - postbuild.sh - initial version --- lang/postbuild.sh | 99 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 lang/postbuild.sh diff --git a/lang/postbuild.sh b/lang/postbuild.sh new file mode 100644 index 00000000..43fe8c8a --- /dev/null +++ b/lang/postbuild.sh @@ -0,0 +1,99 @@ +#!/bin/sh +# postbuild.sh +# +# Output folder and elf file: +OUTDIR="../../output" +OUTELF="$OUTDIR/Firmware.ino.elf" +# +# AVR gcc tools used: +OBJCOPY=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy.exe + +function finish +{ + echo + echo "postbuild.sh finished... press enter key" + read + exit +} + +echo "postbuild.sh started..." + +#check input files +echo " checking files:" +if [ ! -e $OUTDIR ]; then echo " folder '$OUTDIR' not found!"; finish; fi +echo " folder OK" +if [ ! -e $OUTELF ]; then echo " elf file '$OUTELF' not found!"; finish; fi +echo " elf OK" +if ! ls $OUTDIR/sketch/*.o >/dev/null 2>&1; then echo " no object files in '$OUTDIR/sketch/'!"; finish; fi +echo " objects OK" + +#run progmem.sh to examine content of progmem1 +./progmem.sh 1 + +#create sorted list of strings from progmem1.var and lang_en.txt +#lines from progmem1.var will contain addres (8 chars) and english text +#lines from lang_en.txt will contain linenumber and english text +#after sort this will generate pairs of lines (line from progmem1 first) +#result of sort is compiled with simple script and stored to file textaddr.txt +echo "compiling progmem1.var and lang_en.txt" +addr='' +text='' +(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\ + cat lang_en.txt | sed "/^$/d;/^#/d" | sed = | sed '{N;s/\n/ /}') |\ + sort -k2 |\ + sed "s/\\\/\\\\\\\/g" | while read num txt; do + if [ ${#num} -eq 8 ]; then + if [ -z "$addr" ]; then + addr=$num + else + if [ "$text" == "$txt" ]; then + addr="$addr $num" + else + echo "ADDR NF $addr $text" + addr=$num + fi + fi + text=$txt + else + if [ -z "$addr" ]; then + echo "TEXT NF $num $txt" + else + if [ "$text" == "$txt" ]; then + if [ ${#addr} -eq 8 ]; then + echo "ADDR OK $addr $num" + else + echo "$addr" | sed "s/ /\n/g" | while read ad; do + echo "ADDR OK $ad $num" + done + fi + addr='' + text='' + else + echo "TEXT NF $num $txt" + fi + fi + fi +done > textaddr.txt + +#check for messages declared in progmem1, but not found in lang_en.txt +echo "checking textaddr.txt..." +if cat textaddr.txt | grep "^ADDR NF"; then echo "Some strings not found in lang_en.txt!"; finish; fi + +#update progmem1 id entries in binary file +echo "extracting binary..." +$OBJCOPY -I ihex -O binary $OUTDIR/Firmware.ino.hex ./firmware.bin + +#update progmem1 id entries in binary file +echo "updating binary..." +#dd if=/dev/zero of=test.bin bs=512 count=64 2>/dev/null +time cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\ + awk '{ hi = int($2 / 256); lo = int($2 - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), hi, lo); }' |\ + while read addr data; do + echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null + done + +#update progmem1 id entries in binary file +echo "converting to hex..." +$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex + +finish From 64f7272ea7b62c4fec53a2a99c62eeaf1927dbe4 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 24 May 2018 18:49:35 +0200 Subject: [PATCH 37/68] M27: returns print saved (fixes setting temperatures to zero during crash detection) --- Firmware/cardreader.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 740a9cc6..a2faa623 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -523,7 +523,10 @@ void CardReader::getStatus() SERIAL_PROTOCOL(itostr2(time%60)); SERIAL_PROTOCOLPGM("\n"); } - else{ + else if (saved_printing) { + SERIAL_PROTOCOLLNPGM("Print saved"); + } + else { SERIAL_PROTOCOLLNPGM("Not SD printing"); } } From 2ffb95c72aa15d82ca814cbf5770e56ba19a12a2 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 24 May 2018 20:28:00 +0200 Subject: [PATCH 38/68] bugfix: use absolute coordinates for steel sheet removal position, because there is no homing at the beginning of calibration in case that position is already known --- Firmware/Marlin_main.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 272cbcfe..624c3673 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3470,11 +3470,12 @@ void process_commands() if (result) { current_position[Z_AXIS] = 50; - current_position[Y_AXIS] += 180; + current_position[Y_AXIS] = 180; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET); - current_position[Y_AXIS] -= 180; + current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1); + current_position[X_AXIS] = pgm_read_float(bed_ref_points_4); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); feedrate = homing_feedrate[Z_AXIS] / 10; From b8075e11321354a0dde568ffd05aff3b87c6dd31 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sat, 26 May 2018 21:24:42 +0200 Subject: [PATCH 39/68] New ML support lang_en.txt - fix missing empty line progmem.sh, postbuild.sh - improved textaddr.sh, update_lang.sh - new files --- lang/lang_en.txt | 3 +- lang/postbuild.sh | 143 +++++++++++++++++++++++--------------------- lang/progmem.sh | 65 +++++++++++--------- lang/textaddr.sh | 68 +++++++++++++++++++++ lang/update_lang.sh | 68 +++++++++++++++++++++ 5 files changed, 251 insertions(+), 96 deletions(-) create mode 100644 lang/textaddr.sh create mode 100644 lang/update_lang.sh diff --git a/lang/lang_en.txt b/lang/lang_en.txt index 71bcfe77..170eb8ea 100644 --- a/lang/lang_en.txt +++ b/lang/lang_en.txt @@ -638,7 +638,8 @@ "Please clean the nozzle for calibration. Click when done." #MSG_SELFTEST_PLEASECHECK c=0 r=0 -"Please check :" +"Please check :" + #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." diff --git a/lang/postbuild.sh b/lang/postbuild.sh index 43fe8c8a..0d96315d 100644 --- a/lang/postbuild.sh +++ b/lang/postbuild.sh @@ -1,5 +1,20 @@ #!/bin/sh -# postbuild.sh +# postbuild.sh - multi-language support high-level script +# for generating binary with secondary language +# +# Input files: +# $OUTDIR/Firmware.ino.elf +# $OUTDIR/sketch/*.o (all object files) +# +# Output files: +# text.sym +# $PROGMEM.sym (progmem1.sym) +# $PROGMEM.lss (...) +# $PROGMEM.dat +# $PROGMEM.chr +# $PROGMEM.var +# $PROGMEM.txt +# textaddr.txt # # Output folder and elf file: OUTDIR="../../output" @@ -7,93 +22,85 @@ OUTELF="$OUTDIR/Firmware.ino.elf" # # AVR gcc tools used: OBJCOPY=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy.exe +# +# Selected language: +LANG=$1 +#if [ -z "$LANG" ]; then LANG='cz'; fi + function finish { echo - echo "postbuild.sh finished... press enter key" - read - exit + if [ "$1" == "0" ]; then + echo "postbuild.sh finished with success" >&2 + else + echo "postbuild.sh finished with errors!" >&2 + fi + case "$-" in + *i*) echo "press enter key"; read ;; + esac + exit $1 } -echo "postbuild.sh started..." +echo "postbuild.sh started" >&2 #check input files -echo " checking files:" -if [ ! -e $OUTDIR ]; then echo " folder '$OUTDIR' not found!"; finish; fi -echo " folder OK" -if [ ! -e $OUTELF ]; then echo " elf file '$OUTELF' not found!"; finish; fi -echo " elf OK" -if ! ls $OUTDIR/sketch/*.o >/dev/null 2>&1; then echo " no object files in '$OUTDIR/sketch/'!"; finish; fi -echo " objects OK" +echo " checking files:" >&2 +if [ ! -e $OUTDIR ]; then echo " folder '$OUTDIR' not found!" >&2; finish 1; fi +echo " folder OK" >&2 +if [ ! -e $OUTELF ]; then echo " elf file '$OUTELF' not found!" >&2; finish 1; fi +echo " elf OK" >&2 +if ! ls $OUTDIR/sketch/*.o >/dev/null 2>&1; then echo " no object files in '$OUTDIR/sketch/'!" >&2; finish 1; fi +echo " objects OK" >&2 -#run progmem.sh to examine content of progmem1 -./progmem.sh 1 +#run progmem.sh - examine content of progmem1 +echo -n " running progmem.sh..." >&2 +./progmem.sh 1 2>progmem.out +if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi +echo "OK" >&2 -#create sorted list of strings from progmem1.var and lang_en.txt -#lines from progmem1.var will contain addres (8 chars) and english text -#lines from lang_en.txt will contain linenumber and english text -#after sort this will generate pairs of lines (line from progmem1 first) -#result of sort is compiled with simple script and stored to file textaddr.txt -echo "compiling progmem1.var and lang_en.txt" -addr='' -text='' -(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\ - cat lang_en.txt | sed "/^$/d;/^#/d" | sed = | sed '{N;s/\n/ /}') |\ - sort -k2 |\ - sed "s/\\\/\\\\\\\/g" | while read num txt; do - if [ ${#num} -eq 8 ]; then - if [ -z "$addr" ]; then - addr=$num - else - if [ "$text" == "$txt" ]; then - addr="$addr $num" - else - echo "ADDR NF $addr $text" - addr=$num - fi - fi - text=$txt - else - if [ -z "$addr" ]; then - echo "TEXT NF $num $txt" - else - if [ "$text" == "$txt" ]; then - if [ ${#addr} -eq 8 ]; then - echo "ADDR OK $addr $num" - else - echo "$addr" | sed "s/ /\n/g" | while read ad; do - echo "ADDR OK $ad $num" - done - fi - addr='' - text='' - else - echo "TEXT NF $num $txt" - fi - fi - fi -done > textaddr.txt +#run textaddr.sh - map progmem addreses to text identifiers +echo -n " running textaddr.sh..." >&2 +./textaddr.sh 2>textaddr.out +if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi +echo "OK" >&2 #check for messages declared in progmem1, but not found in lang_en.txt -echo "checking textaddr.txt..." -if cat textaddr.txt | grep "^ADDR NF"; then echo "Some strings not found in lang_en.txt!"; finish; fi +echo -n " checking textaddr.txt..." >&2 +if cat textaddr.txt | grep "^ADDR NF"; then echo "NG! - some strings not found in lang_en.txt!"; finish 1; fi +echo "OK" >&2 #update progmem1 id entries in binary file -echo "extracting binary..." +echo -n " extracting binary..." >&2 $OBJCOPY -I ihex -O binary $OUTDIR/Firmware.ino.hex ./firmware.bin +echo "OK" >&2 + +#update binary file +echo " updating binary:" >&2 #update progmem1 id entries in binary file -echo "updating binary..." -#dd if=/dev/zero of=test.bin bs=512 count=64 2>/dev/null -time cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\ - awk '{ hi = int($2 / 256); lo = int($2 - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), hi, lo); }' |\ +echo -n " primary language ids..." >&2 +cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\ + awk '{ hi = int($2 / 256); lo = int($2 - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), lo, hi); }' |\ while read addr data; do echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null done +echo "OK" >&2 -#update progmem1 id entries in binary file -echo "converting to hex..." +#update _SEC_LANG in binary file if language is selected +echo -n " secondary language data..." >&2 +if [ ! -z "$LANG" ]; then + ./update_lang.sh $LANG 2>./update_lang.out + if [ $? -ne 0 ]; then echo "NG! - check update_lang.out file" >&2; finish 1; fi + echo "OK" >&2 + finish 0 +else + echo "skipped" >&2 +fi + +#convert bin to hex +echo -n " converting to hex..." >&2 $OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex +echo "OK" >&2 -finish +finish 0 diff --git a/lang/progmem.sh b/lang/progmem.sh index ea22e5a7..a9f677a9 100644 --- a/lang/progmem.sh +++ b/lang/progmem.sh @@ -1,19 +1,10 @@ #!/bin/sh -# -# Multi-language support postbuild script -# Description of proces: -# 0. remove output files -# 1. list symbol table of section '.text' from output elf file to text.sym (sorted by address) -# 2. list symbol table of section '.$PROGMEM' from all output object files to $PROGMEM.sym -# 3. filter only $PROGMEM symbols from text.sym and store it back to $PROGMEM.sym with absolute address -# 4. calculate start and stop address of section '.$PROGMEM' -# 5. extract string data from elf file to $PROGMEM.dat -# 6. prepare string data for character check and conversion (output to $PROGMEM.chr) -# 7. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt) +# progmem.sh - multi-language support low-level script +# for examining content of progmem sections (default is progmem1) # # Input files: -# Firmware.ino.elf -# *.o (all object files) +# $OUTDIR/Firmware.ino.elf +# $OUTDIR/sketch/*.o (all object files) # # Output files: # text.sym @@ -34,11 +25,28 @@ OUTELF="$OUTDIR/Firmware.ino.elf" # # AVR gcc tools used: OBJDUMP=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objdump.exe -#READELF=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-readelf.exe +# +# +# Description of process: +# 0. check input files +# 1. remove output files +# 2. list symbol table of section '.text' from output elf file to text.sym (sorted by address) +# 3. list symbol table of section '.$PROGMEM' from all output object files to $PROGMEM.sym +# 4. filter only $PROGMEM symbols from text.sym and store it back to $PROGMEM.sym with absolute address +# 5. calculate start and stop address of section '.$PROGMEM' +# 6. extract string data from elf file to $PROGMEM.dat +# 7. prepare string data for character check and conversion (output to $PROGMEM.chr) +# 8. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt) +# +echo "progmem.sh started" >&2 # (0) -echo "step 0 - removing output files" +echo " progmem.sh (0) - checking input files" >&2 +if [ ! -e $OUTDIR ]; then echo "progmem.sh - file '$OUTELF' not found!" >&2; exit 1; fi + +# (1) +echo " progmem.sh (1) - removing output files" >&2 #remove output files if exists if [ -e text.sym ]; then rm text.sym; fi if [ -e $PROGMEM.sym ]; then rm $PROGMEM.sym; fi @@ -49,21 +57,21 @@ if [ -e $PROGMEM.var ]; then rm $PROGMEM.var; fi if [ -e $PROGMEM.txt ]; then rm $PROGMEM.txt; fi # (1) -echo "step 1 - listing symbol table of section '.text'" +echo " progmem.sh (2) - listing symbol table of section '.text'" >&2 #list symbols from section '.text' into file text.sym (only address, size and name) $OBJDUMP -t -j ".text" $OUTELF | tail -n +5 | grep -E "^[0-9a-f]{8} [gl] O" | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> text.sym # (2) -echo "step 2 - listing symbol table of section '.$PROGMEM'" +echo " progmem.sh (3) - listing symbol table of section '.$PROGMEM'" >&2 #loop over all object files ls "$OUTDIR"/sketch/*.o | while read fn; do - echo " processing $fn" + echo " processing $fn" >&2 #list symbols from section $PROGMEM (only address, size and name) - $OBJDUMP -t -j ".$PROGMEM" $fn | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym -done 2>/dev/null + $OBJDUMP -t -j ".$PROGMEM" $fn 2>/dev/null | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym +done #exit # (3) -echo "step 3 - filtering $PROGMEM symbols" +echo " progmem.sh (4) - filtering $PROGMEM symbols" >&2 #create list of $PROGMEM symbol names separated by '\|' progmem=$(cut -c19- $PROGMEM.sym) progmem=$(echo $progmem | sed "s/ /\\\b\\\|\\\b/g") @@ -72,16 +80,16 @@ progmem='\b'$progmem'\b' cat text.sym | grep $progmem > $PROGMEM.sym # (4) -echo "step 4 - calculating start and stop address" +echo " progmem.sh (5) - calculating start and stop address" >&2 #calculate start addres of section ".$PROGMEM" PROGMEM_BEG=$(head -n1 $PROGMEM.sym | while read offs size name; do echo "0x"$offs; done) #calculate stop addres of section ".$PROGMEM" PROGMEM_END=$(tail -n1 $PROGMEM.sym | while read offs size name; do printf "0x%x" $(("0x"$offs + "0x"$size)); done) -echo " START address = "$PROGMEM_BEG -echo " STOP address = "$PROGMEM_END +echo " START address = "$PROGMEM_BEG >&2 +echo " STOP address = "$PROGMEM_END >&2 # (5) -echo "step 5 - extracting string data from elf" +echo " progmem.sh (6) - extracting string data from elf" >&2 #dump $PROGMEM data in hex format, cut textual data (keep hex data only) $OBJDUMP -d -j ".text" -w -z --start-address=$PROGMEM_BEG --stop-address=$PROGMEM_END $OUTELF | cut -c1-57 > $PROGMEM.lss #convert $PROGMEM.lss to $PROGMEM.dat: @@ -94,7 +102,7 @@ cat $PROGMEM.lss | tail -n +7 | sed -E 's/^$/|/;s/^........:\t/ /;s/:/ / tr -d '\n' | sed "s/[|]/\n/g" | grep $progmem > $PROGMEM.dat # (6) -echo "step 6 - preparing string data" +echo " progmem.sh (7) - preparing string data" >&2 #convert $PROGMEM.dat to $PROGMEM.chr (prepare string data for character check and conversion) # replace first space with tab # replace second space with tab and space @@ -104,6 +112,7 @@ cat $PROGMEM.dat | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr # (7) #convert $PROGMEM.chr to $PROGMEM.var (convert data to text) +echo " progmem.sh (8) - converting string data" >&2 cat $PROGMEM.chr | \ sed 's/ \\xff\\xff/ /;' | \ sed 's/\\x22/\\\\\\x22/g;' | \ @@ -113,4 +122,6 @@ cat $PROGMEM.chr | \ sed 's/\\x00$/\\x0a/;s/^/printf "/;s/$/"/' | sh > $PROGMEM.var cat $PROGMEM.var | sed 's/\r/\n/g' |sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt -read +echo "progmem.sh finished" >&2 + +exit 0 \ No newline at end of file diff --git a/lang/textaddr.sh b/lang/textaddr.sh new file mode 100644 index 00000000..46b2123c --- /dev/null +++ b/lang/textaddr.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# textaddr.sh - multi-language support low level script +# for compiling progmem1.var and lang_en.txt files +# to textaddr.txt file (mapping of progmem addreses to text idenifiers) +# +# Input files: +# progmem1.var +# lang_en.txt +# +# Output files: +# textaddr.txt +# +# +# Dscription of process: +# check if input files exists +# create sorted list of strings from progmem1.var and lang_en.txt +# lines from progmem1.var will contain addres (8 chars) and english text +# lines from lang_en.txt will contain linenumber and english text +# after sort this will generate pairs of lines (line from progmem1 first) +# result of sort is compiled with simple script and stored into file textaddr.txt +# + +echo "textaddr.sh started" >&2 + +if [ ! -e progmem1.var ]; then echo 'textaddr.sh - file progmem1.var not found!' >&2; exit 1; fi +if [ ! -e lang_en.txt ]; then echo 'textaddr.sh - file lang_en.txt not found!' >&2; exit 1; fi +addr='' +text='' +(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\ + cat lang_en.txt | sed "/^$/d;/^#/d" | sed = | sed '{N;s/\n/ /}') |\ + sort -k2 |\ + sed "s/\\\/\\\\\\\/g" | while read num txt; do + if [ ${#num} -eq 8 ]; then + if [ -z "$addr" ]; then + addr=$num + else + if [ "$text" == "$txt" ]; then + addr="$addr $num" + else + echo "ADDR NF $addr $text" + addr=$num + fi + fi + text=$txt + else + if [ -z "$addr" ]; then + echo "TEXT NF $num $txt" + else + if [ "$text" == "$txt" ]; then + if [ ${#addr} -eq 8 ]; then + echo "ADDR OK $addr $num" + else + echo "$addr" | sed "s/ /\n/g" | while read ad; do + echo "ADDR OK $ad $num" + done + fi + addr='' + text='' + else + echo "TEXT NF $num $txt" + fi + fi + fi +done > textaddr.txt + +echo "textaddr.sh finished" >&2 + +exit 0 \ No newline at end of file diff --git a/lang/update_lang.sh b/lang/update_lang.sh new file mode 100644 index 00000000..3e884bfa --- /dev/null +++ b/lang/update_lang.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# update_lang.sh - multi-language support low level script +# for updating secondary language in binary file +# +# AVR gcc tools used: +OBJCOPY=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy.exe +# +# Selected language: +LANG=$1 +if [ -z "$LANG" ]; then LANG='cz'; fi +# + +function finish +{ + echo + if [ "$1" == "0" ]; then + echo "update_lang.sh finished with success" >&2 + else + echo "update_lang.sh finished with errors!" >&2 + fi + case "$-" in + *i*) echo "press enter key"; read ;; + esac + exit $1 +} + +echo "update_lang.sh started" >&2 +echo "selected language=$LANG" >&2 + +echo -n " checking files..." >&2 +if [ ! -e text.sym ]; then echo "NG! file text.sym not found!" >&2; finish 1; fi +if [ ! -e lang_$LANG.bin ]; then echo "NG! file lang_$LANG.bin not found!" >&2; finish 1; fi +if [ ! -e firmware.bin ]; then echo "NG! file firmware.bin not found!" >&2; finish 1; fi +echo "OK" >&2 + +echo -n " checking symbols..." >&2 +#find symbol _SEC_LANG in section '.text' +sec_lang=$(cat text.sym | grep -E "\b_SEC_LANG\b") +if [ -z "$sec_lang" ]; then echo "NG!\n symbol _SEC_LANG not found!" >&2; finish 1; fi +echo "OK" >&2 + +echo " calculating vars:" >&2 +#get addres and size +sec_lang_addr='0x'$(echo $sec_lang | cut -f1 -d' ') +sec_lang_size='0x'$(echo $sec_lang | cut -f2 -d' ') +echo " sec_lang_addr =$sec_lang_addr" >&2 +echo " sec_lang_size =$sec_lang_size" >&2 +#calculate lang_table_addr (aligned to 256byte page) +lang_table_addr=$((256*$((($sec_lang_addr + 255) / 256)))) +printf " lang_table_addr =0x%04x\n" $lang_table_addr >&2 +#calculate lang_table_size +lang_table_size=$((256*$((($sec_lang_size - ($lang_table_addr - $sec_lang_addr))/256)))) +printf " lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_size >&2 + +#get lang_cz.bin file size +lang_file_size=$(wc -c lang_cz.bin | cut -f1 -d' ') +printf " lang_file_size =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2 + +if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!"; finish 1; fi + +echo "updating 'firmware.bin'..." >&2 +dd if=lang_cz.bin of=firmware.bin bs=1 seek=$lang_table_addr conv=notrunc 2>/dev/null + +#convert bin to hex +echo "converting to hex..." >&2 +$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex + +finish 0 From 2923d8add7563cdd73089bf7cddabcbaf0ac50de Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 27 May 2018 01:15:38 +0200 Subject: [PATCH 40/68] New ML support - renamed output file $PROGMEM.dat to $PROGMEM.hex +some cosmetics in progmem.sh --- lang/postbuild.sh | 2 +- lang/progmem.sh | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lang/postbuild.sh b/lang/postbuild.sh index 0d96315d..0bdab8ad 100644 --- a/lang/postbuild.sh +++ b/lang/postbuild.sh @@ -10,7 +10,7 @@ # text.sym # $PROGMEM.sym (progmem1.sym) # $PROGMEM.lss (...) -# $PROGMEM.dat +# $PROGMEM.hex # $PROGMEM.chr # $PROGMEM.var # $PROGMEM.txt diff --git a/lang/progmem.sh b/lang/progmem.sh index a9f677a9..e0f7750e 100644 --- a/lang/progmem.sh +++ b/lang/progmem.sh @@ -10,7 +10,7 @@ # text.sym # $PROGMEM.sym # $PROGMEM.lss -# $PROGMEM.dat +# $PROGMEM.hex # $PROGMEM.chr # $PROGMEM.var # $PROGMEM.txt @@ -34,7 +34,7 @@ OBJDUMP=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objdump.exe # 3. list symbol table of section '.$PROGMEM' from all output object files to $PROGMEM.sym # 4. filter only $PROGMEM symbols from text.sym and store it back to $PROGMEM.sym with absolute address # 5. calculate start and stop address of section '.$PROGMEM' -# 6. extract string data from elf file to $PROGMEM.dat +# 6. extract string data from elf file to $PROGMEM.hex # 7. prepare string data for character check and conversion (output to $PROGMEM.chr) # 8. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt) # @@ -51,17 +51,17 @@ echo " progmem.sh (1) - removing output files" >&2 if [ -e text.sym ]; then rm text.sym; fi if [ -e $PROGMEM.sym ]; then rm $PROGMEM.sym; fi if [ -e $PROGMEM.lss ]; then rm $PROGMEM.lss; fi -if [ -e $PROGMEM.dat ]; then rm $PROGMEM.dat; fi +if [ -e $PROGMEM.hex ]; then rm $PROGMEM.hex; fi if [ -e $PROGMEM.chr ]; then rm $PROGMEM.chr; fi if [ -e $PROGMEM.var ]; then rm $PROGMEM.var; fi if [ -e $PROGMEM.txt ]; then rm $PROGMEM.txt; fi -# (1) +# (2) echo " progmem.sh (2) - listing symbol table of section '.text'" >&2 #list symbols from section '.text' into file text.sym (only address, size and name) $OBJDUMP -t -j ".text" $OUTELF | tail -n +5 | grep -E "^[0-9a-f]{8} [gl] O" | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> text.sym -# (2) +# (3) echo " progmem.sh (3) - listing symbol table of section '.$PROGMEM'" >&2 #loop over all object files ls "$OUTDIR"/sketch/*.o | while read fn; do @@ -69,8 +69,8 @@ ls "$OUTDIR"/sketch/*.o | while read fn; do #list symbols from section $PROGMEM (only address, size and name) $OBJDUMP -t -j ".$PROGMEM" $fn 2>/dev/null | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym done -#exit -# (3) + +# (4) echo " progmem.sh (4) - filtering $PROGMEM symbols" >&2 #create list of $PROGMEM symbol names separated by '\|' progmem=$(cut -c19- $PROGMEM.sym) @@ -79,7 +79,7 @@ progmem='\b'$progmem'\b' #filter $PROGMEM symbols from section '.text' (result file will contain list sorted by absolute address) cat text.sym | grep $progmem > $PROGMEM.sym -# (4) +# (5) echo " progmem.sh (5) - calculating start and stop address" >&2 #calculate start addres of section ".$PROGMEM" PROGMEM_BEG=$(head -n1 $PROGMEM.sym | while read offs size name; do echo "0x"$offs; done) @@ -88,29 +88,29 @@ PROGMEM_END=$(tail -n1 $PROGMEM.sym | while read offs size name; do printf "0x%x echo " START address = "$PROGMEM_BEG >&2 echo " STOP address = "$PROGMEM_END >&2 -# (5) +# (6) echo " progmem.sh (6) - extracting string data from elf" >&2 #dump $PROGMEM data in hex format, cut textual data (keep hex data only) $OBJDUMP -d -j ".text" -w -z --start-address=$PROGMEM_BEG --stop-address=$PROGMEM_END $OUTELF | cut -c1-57 > $PROGMEM.lss -#convert $PROGMEM.lss to $PROGMEM.dat: +#convert $PROGMEM.lss to $PROGMEM.hex: # replace empty lines with '|' (variables separated by empty lines) # remove address from multiline variables (keep address at first variable line only) # remove '<' and '>:', remove whitespace at end of lines # remove line-endings, replace separator with '\n' (join hex data lines - each line will contain single variable) # filter progmem symbols cat $PROGMEM.lss | tail -n +7 | sed -E 's/^$/|/;s/^........:\t/ /;s/:/ /g;s/[ \t]*$//' |\ - tr -d '\n' | sed "s/[|]/\n/g" | grep $progmem > $PROGMEM.dat + tr -d '\n' | sed "s/[|]/\n/g" | grep $progmem > $PROGMEM.hex -# (6) +# (7) echo " progmem.sh (7) - preparing string data" >&2 -#convert $PROGMEM.dat to $PROGMEM.chr (prepare string data for character check and conversion) +#convert $PROGMEM.hex to $PROGMEM.chr (prepare string data for character check and conversion) # replace first space with tab # replace second space with tab and space # replace all remaining spaces with '\x' # replace all tabs with spaces -cat $PROGMEM.dat | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr +cat $PROGMEM.hex | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr -# (7) +# (8) #convert $PROGMEM.chr to $PROGMEM.var (convert data to text) echo " progmem.sh (8) - converting string data" >&2 cat $PROGMEM.chr | \ From fba90032232e70c4242dc4887161b490c29c6964 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 27 May 2018 03:55:07 +0200 Subject: [PATCH 41/68] New ML support - make_lang.sh script --- lang/make_lang.sh | 134 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 lang/make_lang.sh diff --git a/lang/make_lang.sh b/lang/make_lang.sh new file mode 100644 index 00000000..976269c9 --- /dev/null +++ b/lang/make_lang.sh @@ -0,0 +1,134 @@ +#!/bin/sh +# makelang.sh - multi-language support high-level script +# for generating lang_xx.bin (secondary language binary file) +# +# Input files: +# lang_en.txt +# lang_en_$LANG.txt +# +# Output files: +# lang_en.tmp (temporary, will be removed when finished) +# lang_en_$LANG.tmp ==||== +# lang_en_$LANG.dif ==||== +# lang_$LANG.txt +# +# +# Selected language: +LANG=$1 +if [ -z "$LANG" ]; then LANG='cz'; fi +# +# + +function finish +{ + if [ "$1" == "0" ]; then + if [ -e lang_en.tmp ]; then rm lang_en.tmp; fi + if [ -e lang_en_$LANG.tmp ]; then rm lang_en_$LANG.tmp; fi + if [ -e lang_en_$LANG.dif ]; then rm lang_en_$LANG.dif; fi + fi + echo + if [ "$1" == "0" ]; then + echo "make_lang.sh finished with success" >&2 + else + echo "make_lang.sh finished with errors!" >&2 + fi + case "$-" in + *i*) echo "press enter key"; read ;; + esac + exit $1 +} + +echo "make_lang.sh started" >&2 +echo "selected language=$LANG" >&2 + +#check if input files exists +echo -n " checking input files..." >&2 +if [ ! -e lang_en.txt ]; then echo "NG! file lang_en.txt not found!" >&2; exit 1; fi +if [ ! -e lang_en_$LANG.txt ]; then echo "NG! file lang_en_$LANG.txt not found!" >&2; exit 1; fi +echo "OK" >&2 + +#filter comment and empty lines from key and dictionary files, create temporary files +echo -n " creating tmp files..." >&2 +cat lang_en.txt | sed "/^$/d;/^#/d" > lang_en.tmp +cat lang_en_$LANG.txt | sed "/^$/d;/^#/d" > lang_en_$LANG.tmp +echo "OK" >&2 +#cat lang_en_$LANG.tmp | sed 'n;d' >test1.txt + +#compare files using diff and check for differences +echo -n " comparing tmp files..." >&2 +if ! cat lang_en_$LANG.tmp | sed 'n;d' | diff lang_en.tmp - > lang_en_$LANG.dif; then + echo "NG!" >&2 + echo "Entries in lang_en_$LANG.txt are different from lang_en.txt!" >&2 + echo "please check lang_en_$LANG.dif" >&2 + finish 1 +fi +echo "OK" >&2 + +#generate lang_xx.txt (secondary language text data sorted by ids) +echo -n " generating lang_$LANG.txt..." >&2 +cat lang_en_$LANG.tmp | sed '1~2d' | sed "s/^\"\\\\x00/\"/" > lang_$LANG.txt +echo "OK" >&2 + +#generate lang_xx.dat (secondary language text data in binary form) +echo -n " generating lang_$LANG.dat..." >&2 +cat lang_$LANG.txt | sed "s/\\\\/\\\\\\\\/g" | while read s; do + s=${s#\"} + s=${s%\"} + echo -n -e "$s"'\x00' +done >lang_$LANG.dat +echo "OK" >&2 + +#generate lang_xx.ofs (secondary language text data offset table) +echo -n " generating lang_$LANG.ofs..." >&2 +cat lang_$LANG.txt | sed "s/\\\\x[0-9a-f][0-9a-f]/\./g;s/\\\\[0-7][0-7][0-7]/\./g" |\ + awk 'BEGIN { o=0;} { printf("%d\n",o); o+=(length($0)-1); }' > lang_$LANG.ofs +echo "OK" >&2 + +lt_data_size=$(wc -c lang_$LANG.dat | cut -f1 -d' ') + +lt_magic='\xa5\x5a\xb4\x4b' +lt_count=$(grep -c '^' lang_$LANG.txt) +lt_size=$((16 + 2 * $lt_count + $lt_data_size)) +lt_chsum=1 +lt_resv0='\xff\xff' +lt_resv1='\xff\xff\xff\xff' + +#generate lang_xx.bin (secondary language result binary file) +echo " generating lang_$LANG.bin:" >&2 +#create empty file +dd if=/dev/zero of=lang_$LANG.bin bs=1 count=$lt_size 2>/dev/null +#awk code to format ui16 variables for dd +awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }' + +#write data to binary file with dd + +echo -n " writing header (16 bytes)..." >&2 +echo -n -e "$lt_magic" |\ + dd of=lang_$LANG.bin bs=1 count=4 seek=0 conv=notrunc 2>/dev/null +echo -n -e $(echo -n "$lt_size" | awk "$awk_ui16") |\ + dd of=lang_$LANG.bin bs=1 count=2 seek=4 conv=notrunc 2>/dev/null +echo -n -e $(echo -n "$lt_count" | awk "$awk_ui16") |\ + dd of=lang_$LANG.bin bs=1 count=2 seek=6 conv=notrunc 2>/dev/null +echo -n -e $(echo -n "$lt_chsum" | awk "$awk_ui16") |\ + dd of=lang_$LANG.bin bs=1 count=2 seek=8 conv=notrunc 2>/dev/null +echo -n -e "$lt_resv0" |\ + dd of=lang_$LANG.bin bs=1 count=2 seek=10 conv=notrunc 2>/dev/null +echo -n -e "$lt_resv1" |\ + dd of=lang_$LANG.bin bs=1 count=4 seek=12 conv=notrunc 2>/dev/null +echo "OK" >&2 + +echo -n " writing offset table ($((2 * $lt_count)) bytes)..." >&2 +echo -n -e $(cat lang_$LANG.ofs | awk "$awk_ui16" | tr -d '\n'; echo) |\ + dd of=./lang_$LANG.bin bs=1 count=$((2 * $lt_count)) seek=16 conv=notrunc 2>/dev/null +echo "OK" >&2 + +echo -n " writing text data ($lt_data_size bytes)..." >&2 +dd if=./lang_$LANG.dat of=./lang_$LANG.bin bs=1 count=$lt_data_size seek=$((16 + 2 * $lt_count)) conv=notrunc 2>/dev/null +echo "OK" >&2 + +echo " lang_table details:" >&2 +echo " lt_count = $lt_count" >&2 +echo " lt_size = $lt_size" >&2 +echo " lt_chsum = $lt_chsum" >&2 + +finish 0 From 55157640c577a0cb22bf85d37295be53bf7f7cac Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 27 May 2018 15:14:04 +0200 Subject: [PATCH 42/68] New ML support - czech version is working!!! postbuild.sh, make_lang.sh - fixed (id and offset calculation) language.c, language.h - fixed (==||==) config.h - reserved space for _SEC_LANG changed Marlin_main.cpp - debug output + hardcoded lang_select(1) //means cz --- Firmware/Marlin_main.cpp | 14 +++++++++++++- Firmware/config.h | 3 ++- Firmware/language.c | 18 +++++++++++++++--- Firmware/language.h | 1 + lang/make_lang.sh | 28 ++++++++++++++++------------ lang/postbuild.sh | 2 +- 6 files changed, 48 insertions(+), 18 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 8e479799..13d5b82b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1263,13 +1263,25 @@ void setup() /// if (lang_selected >= LANG_NUM){ /// lcd_mylang(); /// } - lang_select(0); + lang_select(1); puts_P(_n("\nNew ML support")); printf_P(_n(" lang_selected = %d\n"), lang_selected); printf_P(_n(" &_SEC_LANG = 0x%04x\n"), &_SEC_LANG); printf_P(_n(" sizeof(_SEC_LANG) = 0x%04x\n"), sizeof(_SEC_LANG)); uint16_t ptr_lang_table0 = ((uint16_t)(&_SEC_LANG) + 0xff) & 0xff00; printf_P(_n(" &_lang_table0 = 0x%04x\n"), ptr_lang_table0); + uint32_t _lt_magic = pgm_read_dword(((uint32_t*)(ptr_lang_table0 + 0))); + uint16_t _lt_size = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 4))); + uint16_t _lt_count = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 6))); + uint16_t _lt_chsum = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 8))); + uint16_t _lt_resv0 = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 10))); + uint32_t _lt_resv1 = pgm_read_dword(((uint32_t*)(ptr_lang_table0 + 12))); + printf_P(_n(" _lt_magic = 0x%08lx %S\n"), _lt_magic, (_lt_magic==0x4bb45aa5)?_n("OK"):_n("NA")); + printf_P(_n(" _lt_size = 0x%04x (%d)\n"), _lt_size, _lt_size); + printf_P(_n(" _lt_count = 0x%04x (%d)\n"), _lt_count, _lt_count); + printf_P(_n(" _lt_chsum = 0x%04x\n"), _lt_chsum); + printf_P(_n(" _lt_resv0 = 0x%04x\n"), _lt_resv0); + printf_P(_n(" _lt_resv1 = 0x%08lx\n"), _lt_resv1); puts_P(_n("\n")); diff --git a/Firmware/config.h b/Firmware/config.h index a90cad5a..6839dd17 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -21,7 +21,8 @@ //LANG - Multi-language support //#define LANG_MODE 0 // primary language only #define LANG_MODE 1 // sec. language support -#define LANG_SIZE_RESERVED 0x2800 // reserved space for secondary language (10kb) +#define LANG_SIZE_RESERVED 0x2700 // reserved space for secondary language (~10kb) +//#define LANG_SIZE_RESERVED 0x1ef8 // reserved space for secondary language (~10kb) #endif //_CONFIG_H diff --git a/Firmware/language.c b/Firmware/language.c index a7f38fd1..78512f18 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -39,7 +39,19 @@ const char* lang_get_translation(const char* s) uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id if (ui == 0xffff) return s + 2; //translation not found ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset - return (const char*)((char*)lang_table + ui + 16); //return calculated pointer + return (const char*)((char*)lang_table + ui); //return calculated pointer +} + +const char* lang_get_sec_lang_str(const char* s) +{ + uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space + ui += 0x00ff; //add 1 page + ui &= 0xff00; //align to page + lang_table_t* _lang_table = ui; //table pointer + ui = pgm_read_word(((uint16_t*)s)); //read string id + if (ui == 0xffff) return s + 2; //translation not found + ui = pgm_read_word(((uint16_t*)(((char*)_lang_table + 16 + ui*2)))); //read relative offset + return (const char*)((char*)_lang_table + ui); //return calculated pointer } const char* lang_select(unsigned char lang) @@ -54,10 +66,10 @@ const char* lang_select(unsigned char lang) return; } uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space - ui += 0x0100; //add 1 page + ui += 0x00ff; //add 1 page ui &= 0xff00; //align to page lang_table = ui; //set table pointer ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16)))); //read relative offset of first string (language name) - return (const char*)((char*)lang_table + ui + 16); //return calculated pointer + return (const char*)((char*)lang_table + ui); //return calculated pointer #endif //(LANG_MODE == 0) } \ No newline at end of file diff --git a/Firmware/language.h b/Firmware/language.h index fbd3ecde..193fcda2 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -70,6 +70,7 @@ extern const char _SEC_LANG[LANG_SIZE_RESERVED]; #endif //(LANG_MODE == 0) extern const char* lang_get_translation(const char* s); +extern const char* lang_get_sec_lang_str(const char* s); extern const char* lang_select(unsigned char lang); #if defined(__cplusplus) diff --git a/lang/make_lang.sh b/lang/make_lang.sh index 976269c9..11a3dd51 100644 --- a/lang/make_lang.sh +++ b/lang/make_lang.sh @@ -78,21 +78,22 @@ cat lang_$LANG.txt | sed "s/\\\\/\\\\\\\\/g" | while read s; do done >lang_$LANG.dat echo "OK" >&2 -#generate lang_xx.ofs (secondary language text data offset table) -echo -n " generating lang_$LANG.ofs..." >&2 -cat lang_$LANG.txt | sed "s/\\\\x[0-9a-f][0-9a-f]/\./g;s/\\\\[0-7][0-7][0-7]/\./g" |\ - awk 'BEGIN { o=0;} { printf("%d\n",o); o+=(length($0)-1); }' > lang_$LANG.ofs -echo "OK" >&2 - -lt_data_size=$(wc -c lang_$LANG.dat | cut -f1 -d' ') - +#calculate variables lt_magic='\xa5\x5a\xb4\x4b' lt_count=$(grep -c '^' lang_$LANG.txt) -lt_size=$((16 + 2 * $lt_count + $lt_data_size)) +lt_data_size=$(wc -c lang_$LANG.dat | cut -f1 -d' ') +lt_offs_size=$((2 * $lt_count)) +lt_size=$((16 + $lt_offs_size + $lt_data_size)) lt_chsum=1 lt_resv0='\xff\xff' lt_resv1='\xff\xff\xff\xff' +#generate lang_xx.ofs (secondary language text data offset table) +echo -n " generating lang_$LANG.ofs..." >&2 +cat lang_$LANG.txt | sed "s/\\\\x[0-9a-f][0-9a-f]/\./g;s/\\\\[0-7][0-7][0-7]/\./g" |\ + awk 'BEGIN { o='$((16 + $lt_offs_size))';} { printf("%d\n",o); o+=(length($0)-1); }' > lang_$LANG.ofs +echo "OK" >&2 + #generate lang_xx.bin (secondary language result binary file) echo " generating lang_$LANG.bin:" >&2 #create empty file @@ -117,13 +118,13 @@ echo -n -e "$lt_resv1" |\ dd of=lang_$LANG.bin bs=1 count=4 seek=12 conv=notrunc 2>/dev/null echo "OK" >&2 -echo -n " writing offset table ($((2 * $lt_count)) bytes)..." >&2 +echo -n " writing offset table ($lt_offs_size bytes)..." >&2 echo -n -e $(cat lang_$LANG.ofs | awk "$awk_ui16" | tr -d '\n'; echo) |\ - dd of=./lang_$LANG.bin bs=1 count=$((2 * $lt_count)) seek=16 conv=notrunc 2>/dev/null + dd of=./lang_$LANG.bin bs=1 count=$lt_offs_size seek=16 conv=notrunc 2>/dev/null echo "OK" >&2 echo -n " writing text data ($lt_data_size bytes)..." >&2 -dd if=./lang_$LANG.dat of=./lang_$LANG.bin bs=1 count=$lt_data_size seek=$((16 + 2 * $lt_count)) conv=notrunc 2>/dev/null +dd if=./lang_$LANG.dat of=./lang_$LANG.bin bs=1 count=$lt_data_size seek=$((16 + $lt_offs_size)) conv=notrunc 2>/dev/null echo "OK" >&2 echo " lang_table details:" >&2 @@ -132,3 +133,6 @@ echo " lt_size = $lt_size" >&2 echo " lt_chsum = $lt_chsum" >&2 finish 0 + + + diff --git a/lang/postbuild.sh b/lang/postbuild.sh index 0bdab8ad..b24bc67d 100644 --- a/lang/postbuild.sh +++ b/lang/postbuild.sh @@ -81,7 +81,7 @@ echo " updating binary:" >&2 #update progmem1 id entries in binary file echo -n " primary language ids..." >&2 cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\ - awk '{ hi = int($2 / 256); lo = int($2 - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), lo, hi); }' |\ + awk '{ id = $2 - 1; hi = int(id / 256); lo = int(id - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), lo, hi); }' |\ while read addr data; do echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null done From def9ab56f678ddfcd24b0a645193e803bcb2c9ac Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 27 May 2018 16:24:21 +0200 Subject: [PATCH 43/68] New ML support - language.c - fixed return origial string for zero length translation --- Firmware/language.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/language.c b/Firmware/language.c index 78512f18..67b80f68 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -39,6 +39,8 @@ const char* lang_get_translation(const char* s) uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id if (ui == 0xffff) return s + 2; //translation not found ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset + if (pgm_read_byte(((uint8_t*)((char*)lang_table + ui))) == 0) + return s + 2;//not translated string return (const char*)((char*)lang_table + ui); //return calculated pointer } From 6be6197afdd1f16b7fbcdadf59189cb4da2c95c6 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 27 May 2018 16:25:09 +0200 Subject: [PATCH 44/68] New ML support - update_lang.sh - fix (language suffix $LANG) --- lang/update_lang.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lang/update_lang.sh b/lang/update_lang.sh index 3e884bfa..7c5c90d0 100644 --- a/lang/update_lang.sh +++ b/lang/update_lang.sh @@ -52,14 +52,14 @@ printf " lang_table_addr =0x%04x\n" $lang_table_addr >&2 lang_table_size=$((256*$((($sec_lang_size - ($lang_table_addr - $sec_lang_addr))/256)))) printf " lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_size >&2 -#get lang_cz.bin file size -lang_file_size=$(wc -c lang_cz.bin | cut -f1 -d' ') +#get lang_xx.bin file size +lang_file_size=$(wc -c lang_$LANG.bin | cut -f1 -d' ') printf " lang_file_size =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2 if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!"; finish 1; fi echo "updating 'firmware.bin'..." >&2 -dd if=lang_cz.bin of=firmware.bin bs=1 seek=$lang_table_addr conv=notrunc 2>/dev/null +dd if=lang_$LANG.bin of=firmware.bin bs=1 seek=$lang_table_addr conv=notrunc 2>/dev/null #convert bin to hex echo "converting to hex..." >&2 From e7a8f94b6bca308b713d21ffd964fa1ea6448cec Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Sun, 27 May 2018 16:27:34 +0200 Subject: [PATCH 45/68] New ML support - migration - make_lang_en_xx.sh for all languages +dictionaries (de, es, it, pl) --- lang/lang_en_de.txt | 1372 +++++++++++++++++++++++++++++++ lang/lang_en_es.txt | 1372 +++++++++++++++++++++++++++++++ lang/lang_en_it.txt | 1372 +++++++++++++++++++++++++++++++ lang/lang_en_pl.txt | 1372 +++++++++++++++++++++++++++++++ lang_upgrade/make_lang_en_de.sh | 60 ++ lang_upgrade/make_lang_en_es.sh | 60 ++ lang_upgrade/make_lang_en_it.sh | 60 ++ lang_upgrade/make_lang_en_pl.sh | 60 ++ 8 files changed, 5728 insertions(+) create mode 100644 lang/lang_en_de.txt create mode 100644 lang/lang_en_es.txt create mode 100644 lang/lang_en_it.txt create mode 100644 lang/lang_en_pl.txt create mode 100644 lang_upgrade/make_lang_en_de.sh create mode 100644 lang_upgrade/make_lang_en_es.sh create mode 100644 lang_upgrade/make_lang_en_it.sh create mode 100644 lang_upgrade/make_lang_en_pl.sh diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt new file mode 100644 index 00000000..7a83b251 --- /dev/null +++ b/lang/lang_en_de.txt @@ -0,0 +1,1372 @@ +#MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 +" [off" +"\x00" + +#MSG_PLANNER_BUFFER_BYTES c=0 r=0 +" PlannerBufferBytes: " +"\x00" + +#MSG_FACTOR c=0 r=0 +" \002 Fact" +"\x00" + +#MSG_MAX c=0 r=0 +" \002 Max" +"\x00" + +#MSG_MIN c=0 r=0 +" \002 Min" +"\x00" + +#MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 +" cold extrusion prevented" +"\x00" + +#MSG_FREE_MEMORY c=0 r=0 +" Free Memory: " +"\x00" + +#MSG_CONFIGURATION_VER c=0 r=0 +" Last Updated: " +"\x00" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +"\x00" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +"\x00" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 +" of 9" +"\x00" + +#MSG_MEASURED_OFFSET c=0 r=0 +"[0;0] point offset" +"\x00" + +#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +"\x00" + +#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +"\x00" + +#MSG_REFRESH c=0 r=0 +"\xf8Refresh" +"\x00" + +#MSG_BABYSTEPPING_Z c=20 r=0 +"Adjusting Z" +"\x00" + +#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 +"All correct " +"\x00" + +#MSG_WIZARD_DONE c=20 r=8 +"All is done. Happy printing!" +"Alles wurde getan. Viel Spass beim Drucken!" + +#MSG_ALL c=19 r=1 +"All" +"Alle" + +#MSG_PRESS c=20 r=0 +"and press the knob" +"\x00" + +#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +"Are left and right Z~carriages all up?" +"\x00" + +#MSG_ADJUSTZ c=0 r=0 +"Auto adjust Z?" +"\x00" + +#MSG_AUTO_HOME c=0 r=0 +"Auto home" +"\x00" + +#MSG_AUTOLOAD_FILAMENT c=17 r=0 +"AutoLoad filament" +"\x00" + +#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +"Autoloading filament available only when filament sensor is turned on..." +"\x00" + +#MSG_AUTOLOADING_ENABLED c=20 r=4 +"Autoloading filament is active, just press the knob and insert filament..." +"\x00" + +#MSG_SELFTEST_AXIS_LENGTH c=0 r=0 +"Axis length" +"\x00" + +#MSG_SELFTEST_AXIS c=0 r=0 +"Axis" +"\x00" + +#MSG_BABYSTEPPING_X c=0 r=0 +"Babystepping X" +"\x00" + +#MSG_BABYSTEPPING_Y c=0 r=0 +"Babystepping Y" +"\x00" + +#MSG_SELFTEST_BEDHEATER c=0 r=0 +"Bed / Heater" +"\x00" + +#MSG_BED_DONE c=0 r=0 +"Bed done" +"\x00" + +#MSG_BED_HEATING c=0 r=0 +"Bed Heating" +"\x00" + +#MSG_BED_CORRECTION_MENU c=0 r=0 +"Bed level correct" +"\x00" + +#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 +"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +"\x00" + +#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 +"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +"\x00" + +#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 +"Bed leveling failed. Sensor triggered too high. Waiting for reset." +"\x00" + +#MSG_BED c=0 r=0 +"Bed" +"\x00" + +#MSG_BEGIN_FILE_LIST c=0 r=0 +"Begin file list" +"\x00" + +#MSG_MENU_BELT_STATUS c=15 r=1 +"Belt status" +"\x00" + +#MSG_RECOVER_PRINT c=20 r=2 +"Blackout occurred. Recover print?" +"\x00" + +#MSG_CALIBRATE_E c=20 r=1 +"Calibrate E" +"\x00" + +#MSG_CALIBRATE_BED c=0 r=0 +"Calibrate XYZ" +"\x00" + +#MSG_HOMEYZ c=0 r=0 +"Calibrate Z" +"\x00" + +#MSG_CALIBRATE_PINDA c=17 r=1 +"Calibrate" +"Kalibrieren" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"\x00" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"\x00" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"\x00" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"\x00" + +#MSG_HOMEYZ_DONE c=0 r=0 +"Calibration done" +"\x00" + +#MSG_MENU_CALIBRATION c=0 r=0 +"Calibration" +"\x00" + +#MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 +"Cannot enter subdir: " +"\x00" + +#MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 +"Cannot open subdir" +"\x00" + +#MSG_SD_INSERTED c=0 r=0 +"Card inserted" +"\x00" + +#MSG_SD_REMOVED c=0 r=0 +"Card removed" +"\x00" + +#MSG_NOT_COLOR c=0 r=0 +"Color not correct" +"\x00" + +#MSG_COOLDOWN c=0 r=0 +"Cooldown" +"\x00" + +#MSG_CRASHDETECT_ON c=0 r=0 +"Crash det. [on]" +"\x00" + +#MSG_CRASHDETECT_NA c=0 r=0 +"Crash det. [N/A]" +"\x00" + +#MSG_CRASHDETECT_OFF c=0 r=0 +"Crash det. [off]" +"\x00" + +#MSG_CRASH_DETECTED c=20 r=1 +"Crash detected." +"\x00" + +#MSG_CURRENT c=19 r=1 +"Current" +"Aktuelles" + +#MSG_DATE c=17 r=1 +"Date:" +"Datum" + +#MSG_DISABLE_STEPPERS c=0 r=0 +"Disable steppers" +"\x00" + +#MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +"\x00" + +#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +"Do you want to repeat last step to readjust distance between nozzle and heatbed?" +"Moechten Sie den letzten Schritt wiederholen um den Abstand zwischen Duese und Druckbett neu einzustellen?" + +#MSG_CLEAN_NOZZLE_E c=20 r=8 +"E calibration finished. Please clean the nozzle. Click when done." +"\x00" + +#MSG_EXTRUDER_CORRECTION c=9 r=0 +"E-correct" +"\x00" + +#MSG_END_FILE_LIST c=0 r=0 +"End file list" +"\x00" + +#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 +"Endstop not hit" +"\x00" + +#MSG_SELFTEST_ENDSTOP c=0 r=0 +"Endstop" +"\x00" + +#MSG_ENDSTOPS_HIT c=0 r=0 +"endstops hit: " +"\x00" + +#MSG_SELFTEST_ENDSTOPS c=0 r=0 +"Endstops" +"\x00" + +#MSG_Enqueing c=0 r=0 +"enqueing \x22" +"\x00" + +#MSG_STACK_ERROR c=20 r=4 +"Error - static memory has been overwritten" +"\x00" + +#MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 +"error writing to file" +"\x00" + +#MSG_FSENS_NOT_RESPONDING c=20 r=4 +"ERROR: Filament sensor is not responding, please check connection." +"\x00" + +#MSG_ERROR c=0 r=0 +"ERROR:" +"\x00" + +#MSG_EXTRUDER_1 c=17 r=1 +"Extruder 1" +"Extruder 1" + +#MSG_EXTRUDER_2 c=17 r=1 +"Extruder 2" +"Extruder 2" + +#MSG_EXTRUDER_3 c=17 r=1 +"Extruder 3" +"Extruder 3" + +#MSG_EXTRUDER_4 c=17 r=1 +"Extruder 4" +"Extruder 4" + +#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 +"Extruder fan:" +"\x00" + +#MSG_INFO_EXTRUDER c=15 r=1 +"Extruder info" +"\x00" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"\x00" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"\x00" + +#MSG_FSENS_AUTOLOAD_ON c=17 r=1 +"F. autoload [on]" +"\x00" + +#MSG_FSENS_AUTOLOAD_NA c=17 r=1 +"F. autoload [N/A]" +"\x00" + +#MSG_FSENS_AUTOLOAD_OFF c=17 r=1 +"F. autoload [off]" +"\x00" + +#MSG_FAN_SPEED c=14 r=0 +"Fan speed" +"\x00" + +#MSG_SELFTEST_FAN c=20 r=0 +"Fan test" +"\x00" + +#MSG_FANS_CHECK_ON c=17 r=1 +"Fans check [on]" +"\x00" + +#MSG_FANS_CHECK_OFF c=17 r=1 +"Fans check [off]" +"\x00" + +#MSG_FSENSOR_ON c=0 r=0 +"Fil. sensor [on]" +"\x00" + +#MSG_FSENSOR_NA c=0 r=0 +"Fil. sensor [N/A]" +"\x00" + +#MSG_FSENSOR_OFF c=0 r=0 +"Fil. sensor [off]" +"\x00" + +#MSG_FILAMENT_CLEAN c=20 r=2 +"Filament extruding & with correct color?" +"\x00" + +#MSG_NOT_LOADED c=19 r=0 +"Filament not loaded" +"\x00" + +#MSG_FILAMENT_SENSOR c=20 r=0 +"Filament sensor" +"\x00" + +#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 +"Filament sensor:" +"\x00" + +#MSG_STATS_FILAMENTUSED c=20 r=0 +"Filament used: " +"\x00" + +#MSG_FILE_INCOMPLETE c=20 r=2 +"File incomplete. Continue anyway?" +"\x00" + +#MSG_SD_FILE_OPENED c=0 r=0 +"File opened: " +"\x00" + +#MSG_SD_FILE_SELECTED c=0 r=0 +"File selected" +"\x00" + +#MSG_FINISHING_MOVEMENTS c=20 r=1 +"Finishing movements" +"Bewegung beenden" + +#MSG_V2_CALIBRATION c=17 r=1 +"First layer cal." +"Erste-Schicht Kal" + +#MSG_WIZARD_SELFTEST c=20 r=8 +"First, I will run the selftest to check most common assembly problems." +"Zunaechst fuehre ich den Selbsttest durch um die haeufigsten Probleme bei der Aufbau zu ueberpruefen." + +#MSG_FLOW c=0 r=0 +"Flow" +"\x00" + +#MSG_PRUSA3D_FORUM c=0 r=0 +"forum.prusa3d.com" +"\x00" + +#MSG_SELFTEST_COOLING_FAN c=20 r=0 +"Front print fan?" +"\x00" + +#MSG_BED_CORRECTION_FRONT c=14 r=1 +"Front side[um]" +"\x00" + +#MSG_SELFTEST_FANS c=0 r=0 +"Front/left fans" +"\x00" + +#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 +"Heater/Thermistor" +"\x00" + +#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 +"Heating disabled by safety timer." +"\x00" + +#MSG_HEATING_COMPLETE c=20 r=0 +"Heating done." +"\x00" + +#MSG_HEATING c=0 r=0 +"Heating" +"\x00" + +#MSG_WIZARD_WELCOME c=20 r=7 +"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +"Hallo, ich bin dein Original Prusa i3 Drucker. Moechten Sie meine Hilfe durch den Setup-Prozess?" + +#MSG_PRUSA3D_HOWTO c=0 r=0 +"howto.prusa3d.com" +"\x00" + +#MSG_CHANGE_EXTR c=20 r=1 +"Change extruder" +"\x00" + +#MSG_FILAMENTCHANGE c=0 r=0 +"Change filament" +"\x00" + +#MSG_CNG_SDCARD c=0 r=0 +"Change SD card" +"\x00" + +#MSG_CHANGE_SUCCESS c=0 r=0 +"Change success!" +"\x00" + +#MSG_CORRECTLY c=20 r=0 +"Changed correctly?" +"\x00" + +#MSG_CHANGING_FILAMENT c=20 r=0 +"Changing filament!" +"\x00" + +#MSG_SELFTEST_CHECK_BED c=20 r=0 +"Checking bed " +"\x00" + +#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 +"Checking endstops" +"\x00" + +#MSG_SELFTEST_CHECK_HOTEND c=20 r=0 +"Checking hotend " +"\x00" + +#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 +"Checking sensors " +"\x00" + +#MSG_SELFTEST_CHECK_X c=20 r=0 +"Checking X axis " +"\x00" + +#MSG_SELFTEST_CHECK_Y c=20 r=0 +"Checking Y axis " +"\x00" + +#MSG_SELFTEST_CHECK_Z c=20 r=0 +"Checking Z axis " +"\x00" + +#MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 +"checksum mismatch, Last Line: " +"\x00" + +#MSG_CHOOSE_EXTRUDER c=20 r=1 +"Choose extruder:" +"Waehlen Sie Extruder" + +#MSG_WIZARD_XYZ_CAL c=20 r=8 +"I will run xyz calibration now. It will take approx. 12 mins." +"Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern" + +#MSG_WIZARD_Z_CAL c=20 r=8 +"I will run z calibration now." +"Ich werde jetzt die Z Kalibrierung durchfuehren." + +#MSG_WIZARD_V2_CAL_2 c=20 r=12 +"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +"Ich werde jetzt erste Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Ueberpruefen Sie die Bilder in unserem Handbuch im Kapitel Kalibrierung" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Improving bed calibration point" +"\x00" + +#MSG_WATCH c=0 r=0 +"Info screen" +"\x00" + +#MSG_INIT_SDCARD c=0 r=0 +"Init. SD card" +"\x00" + +#MSG_FILAMENT_LOADING_T0 c=20 r=4 +"Insert filament into extruder 1. Click when done." +"\x00" + +#MSG_FILAMENT_LOADING_T1 c=20 r=4 +"Insert filament into extruder 2. Click when done." +"\x00" + +#MSG_FILAMENT_LOADING_T2 c=20 r=4 +"Insert filament into extruder 3. Click when done." +"\x00" + +#MSG_FILAMENT_LOADING_T3 c=20 r=4 +"Insert filament into extruder 4. Click when done." +"\x00" + +#MSG_INSERT_FILAMENT c=20 r=0 +"Insert filament" +"\x00" + +#MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +"Is filament loaded?" +"Ist das Filament geladen?" + +#MSG_WIZARD_PLA_FILAMENT c=20 r=2 +"Is it PLA filament?" +"Ist es wirklich PLA Filament?" + +#MSG_PLA_FILAMENT_LOADED c=20 r=2 +"Is PLA filament loaded?" +"Ist PLA Filament geladen?" + +#MSG_STEEL_SHEET_CHECK c=20 r=2 +"Is steel sheet on heatbed?" +"\x00" + +#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 +"Iteration " +"Iteration " + +#MSG_KILLED c=0 r=0 +"KILLED. " +"\x00" + +#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 +"Left hotend fan?" +"\x00" + +#MSG_BED_CORRECTION_LEFT c=14 r=1 +"Left side [um]" +"\x00" + +#MSG_LEFT c=12 r=1 +"Left:" +"Links:" + +#MSG_BABYSTEP_Z c=0 r=0 +"Live adjust Z" +"\x00" + +#MSG_LOAD_ALL c=0 r=0 +"Load all" +"Alle laden" + +#MSG_LOAD_FILAMENT_1 c=17 r=0 +"Load filament 1" +"Filament 1 laden" + +#MSG_LOAD_FILAMENT_2 c=17 r=0 +"Load filament 2" +"Filament 2 laden" + +#MSG_LOAD_FILAMENT_3 c=17 r=0 +"Load filament 3" +"Filament 3 laden" + +#MSG_LOAD_FILAMENT_4 c=17 r=0 +"Load filament 4" +"Filament 4 laden" + +#MSG_LOAD_FILAMENT c=17 r=0 +"Load filament" +"\x00" + +#MSG_LOADING_COLOR c=0 r=0 +"Loading color" +"\x00" + +#MSG_LOADING_FILAMENT c=20 r=0 +"Loading filament" +"\x00" + +#MSG_LOOSE_PULLEY c=20 r=1 +"Loose pulley" +"\x00" + +#MSG_M104_INVALID_EXTRUDER c=0 r=0 +"M104 Invalid extruder " +"\x00" + +#MSG_M105_INVALID_EXTRUDER c=0 r=0 +"M105 Invalid extruder " +"\x00" + +#MSG_M109_INVALID_EXTRUDER c=0 r=0 +"M109 Invalid extruder " +"\x00" + +#MSG_M117_V2_CALIBRATION c=25 r=1 +"M117 First layer cal." +"M117 Erste-Schicht Kal." + +#MSG_M200_INVALID_EXTRUDER c=0 r=0 +"M200 Invalid extruder " +"\x00" + +#MSG_M218_INVALID_EXTRUDER c=0 r=0 +"M218 Invalid extruder " +"\x00" + +#MSG_M221_INVALID_EXTRUDER c=0 r=0 +"M221 Invalid extruder " +"\x00" + +#MSG_MAIN c=0 r=0 +"Main" +"\x00" + +#MSG_MARK_FIL c=20 r=8 +"Mark filament 100mm from extruder body. Click when done." +"\x00" + +#MSG_MEASURED_SKEW c=15 r=1 +"Measured skew:" +"Schraeglauf:" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 +"Measuring reference height of calibration point" +"\x00" + +#MSG_MESH_BED_LEVELING c=0 r=0 +"Mesh Bed Leveling" +"\x00" + +#MSG_STEALTH_MODE_OFF c=0 r=0 +"Mode [Normal]" +"\x00" + +#MSG_SILENT_MODE_ON c=0 r=0 +"Mode [silent]" +"\x00" + +#MSG_STEALTH_MODE_ON c=0 r=0 +"Mode [Stealth]" +"\x00" + +#MSG_AUTO_MODE_ON c=0 r=0 +"Mode [auto power]" +"\x00" + +#MSG_SILENT_MODE_OFF c=0 r=0 +"Mode [high power]" +"\x00" + +#MSG_SELFTEST_MOTOR c=0 r=0 +"Motor" +"\x00" + +#MSG_MOVE_AXIS c=0 r=0 +"Move axis" +"\x00" + +#MSG_MOVE_X c=0 r=0 +"Move X" +"\x00" + +#MSG_MOVE_Y c=0 r=0 +"Move Y" +"\x00" + +#MSG_MOVE_Z c=0 r=0 +"Move Z" +"\x00" + +#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 +"New firmware version available:" +"\x00" + +#MSG_ERR_NO_CHECKSUM c=0 r=0 +"No Checksum with line number, Last Line: " +"\x00" + +#MSG_NO_MOVE c=0 r=0 +"No move." +"\x00" + +#MSG_NO_CARD c=0 r=0 +"No SD card" +"\x00" + +#MSG_ERR_NO_THERMISTORS c=0 r=0 +"No thermistors - no temperature" +"\x00" + +#MSG_NO c=0 r=0 +"No" +"\x00" + +#MSG_SELFTEST_NOTCONNECTED c=0 r=0 +"Not connected" +"\x00" + +#MSG_SELFTEST_FAN_NO c=19 r=0 +"Not spinning" +"\x00" + +#MSG_WIZARD_V2_CAL c=20 r=8 +"Now I will calibrate distance between tip of the nozzle and heatbed surface." +"Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." + +#MSG_WIZARD_WILL_PREHEAT c=20 r=4 +"Now I will preheat nozzle for PLA." +"Jetzt werde ich die Duese fuer PLA vorheizen. " + +#MSG_INFO_NOZZLE_FAN c=11 r=1 +"Nozzle FAN:" +"\x00" + +#MSG_NOZZLE c=0 r=0 +"Nozzle" +"\x00" + +#MSG_NOZZLE1 c=0 r=0 +"Nozzle2" +"\x00" + +#MSG_NOZZLE2 c=0 r=0 +"Nozzle3" +"\x00" + +#MSG_OK c=0 r=0 +"ok" +"\x00" + +#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 +"Old settings found. Default PID, Esteps etc. will be set." +"\x00" + +#MSG_SD_OPEN_FILE_FAIL c=0 r=0 +"open failed, File: " +"\x00" + +#MSG_ENDSTOP_OPEN c=0 r=0 +"open" +"\x00" + +#MSG_SD_OPENROOT_FAIL c=0 r=0 +"openRoot failed" +"\x00" + +#MSG_PAUSE_PRINT c=0 r=0 +"Pause print" +"\x00" + +#MSG_PICK_Z c=0 r=0 +"Pick print" +"\x00" + +#MSG_PID_RUNNING c=20 r=1 +"PID cal. " +"PID Kalib." + +#MSG_PID_FINISHED c=20 r=1 +"PID cal. finished" +"PID Kalib. fertig" + +#MSG_PID_EXTRUDER c=17 r=1 +"PID calibration" +"PID Kalibrierung" + +#MSG_PINDA_PREHEAT c=20 r=1 +"PINDA Heating" +"PINDA erwaermen" + +#MSG_PAPER c=20 r=8 +"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +"\x00" + +#MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +"Please clean heatbed and then press the knob." +"Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." + +#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +"Please clean the nozzle for calibration. Click when done." +"\x00" + +#MSG_SELFTEST_PLEASECHECK c=0 r=0 +"Please check :" +"\x00" + +#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +"Bitte ueberpruefen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten." + +#MSG_WIZARD_LOAD_FILAMENT c=20 r=8 +"Please insert PLA filament to the extruder, then press knob to load it." +"Fuehren Sie bitte PLA Filament in den Extruder und bestaetigen Sie den Knopf um es zu laden." + +#MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 +"Please load PLA filament and then resume Wizard by rebooting the printer." +"Bitte laden Sie PLA-Filament und fahren Sie mit dem Assistenten fort, indem Sie den Drucker neu starten." + +#MSG_PLEASE_LOAD_PLA c=20 r=4 +"Please load PLA filament first." +"Bitte laden Sie zuerst PLA Filament." + +#MSG_CHECK_IDLER c=20 r=4 +"Please open idler and remove filament manually." +"\x00" + +#MSG_PLACE_STEEL_SHEET c=20 r=4 +"Please place steel sheet on heatbed." +"\x00" + +#MSG_PRESS_TO_UNLOAD c=20 r=4 +"Please press the knob to unload filament" +"\x00" + +#MSG_PULL_OUT_FILAMENT c=20 r=4 +"Please pull out filament immediately" +"\x00" + +#MSG_REMOVE_STEEL_SHEET c=20 r=4 +"Please remove steel sheet from heatbed." +"\x00" + +#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 +"Please upgrade." +"\x00" + +#MSG_PLEASE_WAIT c=20 r=0 +"Please wait" +"\x00" + +#MSG_POWERUP c=0 r=0 +"PowerUp" +"\x00" + +#MSG_PREHEAT_NOZZLE c=20 r=0 +"Preheat the nozzle!" +"\x00" + +#MSG_PREHEAT c=0 r=0 +"Preheat" +"\x00" + +#MSG_WIZARD_HEATING c=20 r=3 +"Preheating nozzle. Please wait." +"Vorheizen der Duese. Bitte warten." + +#MSG_PREPARE_FILAMENT c=20 r=1 +"Prepare new filament" +"Filam. bereithalten" + +#MSG_PRESS_TO_PREHEAT c=20 r=4 +"Press knob to preheat nozzle and continue." +"\x00" + +#MSG_PRINT_ABORTED c=20 r=0 +"Print aborted" +"\x00" + +#MSG_INFO_PRINT_FAN c=11 r=1 +"Print FAN: " +"\x00" + +#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 +"Print fan:" +"\x00" + +#MSG_CARD_MENU c=0 r=0 +"Print from SD" +"\x00" + +#MSG_PRINT_PAUSED c=20 r=1 +"Print paused" +"Druck pausiert" + +#MSG_STATS_PRINTTIME c=20 r=0 +"Print time: " +"\x00" + +#MSG_PRINTER_DISCONNECTED c=20 r=1 +"Printer disconnected" +"\x00" + +#MSG_ERR_KILLED c=0 r=0 +"Printer halted. kill() called!" +"\x00" + +#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +"\x00" + +#MSG_ERR_STOPPED c=0 r=0 +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +"\x00" + +#WELCOME_MSG c=20 r=0 +"Prusa i3 MK3 ready." +"\x00" + +#MSG_PRUSA3D c=0 r=0 +"prusa3d.com" +"\x00" + +#MSG_BED_CORRECTION_REAR c=14 r=1 +"Rear side [um]" +"\x00" + +#MSG_RECOVERING_PRINT c=20 r=1 +"Recovering print " +"\x00" + +#MSG_M119_REPORT c=0 r=0 +"Reporting endstop status" +"\x00" + +#MSG_RESEND c=0 r=0 +"Resend: " +"\x00" + +#MSG_CALIBRATE_BED_RESET c=0 r=0 +"Reset XYZ calibr." +"\x00" + +#MSG_BED_CORRECTION_RESET c=0 r=0 +"Reset" +"\x00" + +#MSG_RESUME_PRINT c=0 r=0 +"Resume print" +"\x00" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"\x00" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"\x00" + +#MSG_BED_CORRECTION_RIGHT c=14 r=1 +"Right side[um]" +"\x00" + +#MSG_RIGHT c=12 r=1 +"Right:" +"Rechts:" + +#MSG_E_CAL_KNOB c=20 r=8 +"Rotate knob until mark reaches extruder body. Click when done." +"\x00" + +#MSG_SECOND_SERIAL_ON c=17 r=1 +"RPi port [on]" +"\x00" + +#MSG_SECOND_SERIAL_OFF c=17 r=1 +"RPi port [off]" +"\x00" + +#MSG_WIZARD_RERUN c=20 r=7 +"Running Wizard will delete current calibration results and start from the beginning. Continue?" +"Der laufende Assistent loescht die aktuelle Kalibrierergebnisse und wird von Anfang an beginnen. Fortsetzen?" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 +"SD card [normal]" +"\x00" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 +"SD card [FlshAir]" +"\x00" + +#MSG_SD_CARD_OK c=0 r=0 +"SD card ok" +"\x00" + +#MSG_SD_INIT_FAIL c=0 r=0 +"SD init fail" +"\x00" + +#MSG_SD_PRINTING_BYTE c=0 r=0 +"SD printing byte " +"\x00" + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Searching bed calibration point" +"\x00" + +#MSG_LANGUAGE_SELECT c=0 r=0 +"Select language" +"\x00" + +#MSG_SELFTEST_OK c=0 r=0 +"Self test OK" +"\x00" + +#MSG_SELFTEST_START c=20 r=0 +"Self test start " +"\x00" + +#MSG_SELFTEST c=0 r=0 +"Selftest " +"\x00" + +#MSG_SELFTEST_ERROR c=0 r=0 +"Selftest error !" +"\x00" + +#MSG_SELFTEST_FAILED c=20 r=0 +"Selftest failed " +"\x00" + +#MSG_FORCE_SELFTEST c=20 r=8 +"Selftest will be run to calibrate accurate sensorless rehoming." +"\x00" + +#MSG_SET_TEMPERATURE c=19 r=1 +"Set temperature:" +"Temp. einsetzen" + +#MSG_SETTINGS c=0 r=0 +"Settings" +"\x00" + +#MSG_SEVERE_SKEW c=15 r=1 +"Severe skew:" +"Schwerer Schr.:" + +#MSG_SHOW_END_STOPS c=17 r=1 +"Show end stops" +"\x00" + +#MSG_DWELL c=0 r=0 +"Sleep..." +"\x00" + +#MSG_SLIGHT_SKEW c=15 r=1 +"Slight skew:" +"Leichter Schr.:" + +#MSG_FILE_CNT c=20 r=4 +"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +"\x00" + +#MSG_SORT_NONE c=17 r=1 +"Sort: [None]" +"\x00" + +#MSG_SORT_TIME c=17 r=1 +"Sort: [Time]" +"\x00" + +#MSG_SORT_ALPHA c=17 r=1 +"Sort: [Alphabet]" +"\x00" + +#MSG_SORTING c=20 r=1 +"Sorting files" +"\x00" + +#MSG_SPEED c=0 r=0 +"Speed" +"\x00" + +#MSG_SELFTEST_FAN_YES c=19 r=0 +"Spinning" +"\x00" + +#MSG_TEMP_CAL_WARNING c=20 r=4 +"Stable ambient temperature 21-26C is needed a rigid stand is required." +"\x00" + +#MSG_STATISTICS c=0 r=0 +"Statistics " +"\x00" + +#MSG_STEPPER_TOO_HIGH c=0 r=0 +"Steprate too high: " +"\x00" + +#MSG_STOP_PRINT c=0 r=0 +"Stop print" +"\x00" + +#MSG_STOPPED c=0 r=0 +"STOPPED. " +"\x00" + +#MSG_SUPPORT c=0 r=0 +"Support" +"\x00" + +#MSG_SELFTEST_SWAPPED c=0 r=0 +"Swapped" +"\x00" + +#MSG_TEMP_CALIBRATION c=20 r=1 +"Temp. cal. " +"Temp Kalib. " + +#MSG_TEMP_CALIBRATION_ON c=20 r=1 +"Temp. cal. [on]" +"Temp. Kal. [ON]" + +#MSG_TEMP_CALIBRATION_OFF c=20 r=1 +"Temp. cal. [off]" +"Temp. Kal. [OFF]" + +#MSG_CALIBRATION_PINDA_MENU c=17 r=1 +"Temp. calibration" +"Temp. kalibrieren" + +#MSG_TEMP_CAL_FAILED c=20 r=8 +"Temperature calibration failed" +"\x00" + +#MSG_PINDA_NOT_CALIBRATED c=20 r=4 +"Temperature calibration has not been run yet" +"Temperatur wurde nicht kalibriert" + +#MSG_TEMP_CALIBRATION_DONE c=20 r=12 +"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +"Temp. Kalibrierung fertig. Klicken um weiter zu gehen." + +#MSG_TEMPERATURE c=0 r=0 +"Temperature" +"\x00" + +#MSG_MENU_TEMPERATURES c=15 r=1 +"Temperatures" +"\x00" + +#MSG_STATS_TOTALFILAMENT c=20 r=0 +"Total filament :" +"\x00" + +#MSG_STATS_TOTALPRINTTIME c=20 r=0 +"Total print time :" +"\x00" + +#MSG_ENDSTOP_HIT c=0 r=0 +"TRIGGERED" +"\x00" + +#MSG_TUNE c=0 r=0 +"Tune" +"\x00" + +#MSG_UNLOAD_ALL c=0 r=0 +"Unload all" +"Alles entladen" + +#MSG_UNLOAD_FILAMENT_1 c=17 r=0 +"Unload filament 1" +"Filam. 1 entladen" + +#MSG_UNLOAD_FILAMENT_2 c=17 r=0 +"Unload filament 2" +"Filam. 2 entladen" + +#MSG_UNLOAD_FILAMENT_3 c=17 r=0 +"Unload filament 3" +"Filam. 3 entladen" + +#MSG_UNLOAD_FILAMENT_4 c=17 r=0 +"Unload filament 4" +"Filam. 4 entladen" + +#MSG_UNLOAD_FILAMENT c=17 r=0 +"Unload filament" +"\x00" + +#MSG_UNLOADING_FILAMENT c=20 r=1 +"Unloading filament" +"\x00" + +#MSG_USED c=19 r=1 +"Used during print" +"Beim Druck benutzte" + +#MSG_MENU_VOLTAGES c=15 r=1 +"Voltages" +"\x00" + +#MSG_SD_VOL_INIT_FAIL c=0 r=0 +"volume.init failed" +"\x00" + +#MSG_USERWAIT c=0 r=0 +"Wait for user..." +"\x00" + +#MSG_WAITING_TEMP c=20 r=3 +"Waiting for nozzle and bed cooling" +"\x00" + +#MSG_WAITING_TEMP_PINDA c=20 r=3 +"Waiting for PINDA probe cooling" +"\x00" + +#MSG_CHANGED_BOTH c=20 r=4 +"Warning: both printer type and motherboard type changed." +"\x00" + +#MSG_CHANGED_MOTHERBOARD c=20 r=4 +"Warning: motherboard type changed." +"\x00" + +#MSG_CHANGED_PRINTER c=20 r=4 +"Warning: printer type changed." +"\x00" + +#MSG_FW_VERSION_UNKNOWN c=20 r=8 +"WARNING: This is an unofficial, unsupported build. Use at your own risk!" +"\x00" + +#MSG_UNLOAD_SUCCESSFUL c=20 r=2 +"Was filament unload successful?" +"\x00" + +#MSG_SELFTEST_WIRINGERROR c=0 r=0 +"Wiring error" +"\x00" + +#MSG_WIZARD c=17 r=1 +"Wizard" +"Wizard" + +#MSG_SD_WORKDIR_FAIL c=0 r=0 +"workDir open failed" +"\x00" + +#MSG_SD_WRITE_TO_FILE c=0 r=0 +"Writing to file: " +"\x00" + +#MSG_XYZ_DETAILS c=19 r=1 +"XYZ cal. details" +"XYZ Kal. Details" + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +"XYZ calibration all right. Skew will be corrected automatically." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +"XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration compromised. Front calibration points not reachable." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration compromised. Left front calibration point not reachable." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration compromised. Right front calibration point not reachable." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 +"XYZ calibration failed. Bed calibration point was not found." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration failed. Front calibration points not reachable." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration failed. Left front calibration point not reachable." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +"XYZ calibration failed. Please consult the manual." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration failed. Right front calibration point not reachable." +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +"\x00" + +#MSG_Y_DISTANCE_FROM_MIN c=20 r=1 +"Y distance from min:" +"Y Entfernung vom min" + +#MSG_YES c=0 r=0 +"Yes" +"\x00" + +#MSG_FW_VERSION_ALPHA c=20 r=8 +"You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_FW_VERSION_BETA c=20 r=8 +"You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_WIZARD_QUIT c=20 r=8 +"You can always resume the Wizard from Calibration -> Wizard." +"Sie koennen immer den Asistenten im Menu neu aufrufen: Kalibrierung -> Assistant" + diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt new file mode 100644 index 00000000..3a6ace4f --- /dev/null +++ b/lang/lang_en_es.txt @@ -0,0 +1,1372 @@ +#MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 +" [off" +"\x00" + +#MSG_PLANNER_BUFFER_BYTES c=0 r=0 +" PlannerBufferBytes: " +" PlannerBufferBytes: " + +#MSG_FACTOR c=0 r=0 +" \002 Fact" +" \002 Fact" + +#MSG_MAX c=0 r=0 +" \002 Max" +" \002 Max" + +#MSG_MIN c=0 r=0 +" \002 Min" +" \002 Min" + +#MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 +" cold extrusion prevented" +" cold extrusion prevented" + +#MSG_FREE_MEMORY c=0 r=0 +" Free Memory: " +" Free Memory: " + +#MSG_CONFIGURATION_VER c=0 r=0 +" Last Updated: " +" Last Updated: " + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" de 4" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" de 4" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 +" of 9" +" de 9" + +#MSG_MEASURED_OFFSET c=0 r=0 +"[0;0] point offset" +"\x00" + +#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +"\x00" + +#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +"\x00" + +#MSG_REFRESH c=0 r=0 +"\xf8Refresh" +"\xf8Refresh" + +#MSG_BABYSTEPPING_Z c=20 r=0 +"Adjusting Z" +"Ajustar Z" + +#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 +"All correct " +"Todo bien" + +#MSG_WIZARD_DONE c=20 r=8 +"All is done. Happy printing!" +"Terminado! Feliz impresion!" + +#MSG_ALL c=19 r=1 +"All" +"Todos" + +#MSG_PRESS c=20 r=0 +"and press the knob" +"Haz clic" + +#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +"Are left and right Z~carriages all up?" +"Carros Z izq./der. estan arriba maximo?" + +#MSG_ADJUSTZ c=0 r=0 +"Auto adjust Z?" +"Ajustar Eje Z" + +#MSG_AUTO_HOME c=0 r=0 +"Auto home" +"Llevar al origen" + +#MSG_AUTOLOAD_FILAMENT c=17 r=0 +"AutoLoad filament" +"\x00" + +#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +"Autoloading filament available only when filament sensor is turned on..." +"\x00" + +#MSG_AUTOLOADING_ENABLED c=20 r=4 +"Autoloading filament is active, just press the knob and insert filament..." +"\x00" + +#MSG_SELFTEST_AXIS_LENGTH c=0 r=0 +"Axis length" +"\x00" + +#MSG_SELFTEST_AXIS c=0 r=0 +"Axis" +"\x00" + +#MSG_BABYSTEPPING_X c=0 r=0 +"Babystepping X" +"Babystepping X" + +#MSG_BABYSTEPPING_Y c=0 r=0 +"Babystepping Y" +"Babystepping Y" + +#MSG_SELFTEST_BEDHEATER c=0 r=0 +"Bed / Heater" +"Heatbed" + +#MSG_BED_DONE c=0 r=0 +"Bed done" +"Base preparada" + +#MSG_BED_HEATING c=0 r=0 +"Bed Heating" +"Calentando Base" + +#MSG_BED_CORRECTION_MENU c=0 r=0 +"Bed level correct" +"Corr. de la cama" + +#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 +"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +"Nivelacion fallada. Sensor no funciona. Escombros en nozzle? Esperando reset." + +#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 +"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +"Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset." + +#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 +"Bed leveling failed. Sensor triggered too high. Waiting for reset." +"Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset." + +#MSG_BED c=0 r=0 +"Bed" +"Heatbed" + +#MSG_BEGIN_FILE_LIST c=0 r=0 +"Begin file list" +"Begin file list" + +#MSG_MENU_BELT_STATUS c=15 r=1 +"Belt status" +"\x00" + +#MSG_RECOVER_PRINT c=20 r=2 +"Blackout occurred. Recover print?" +"\x00" + +#MSG_CALIBRATE_E c=20 r=1 +"Calibrate E" +"Calibrar E" + +#MSG_CALIBRATE_BED c=0 r=0 +"Calibrate XYZ" +"Calibra XYZ" + +#MSG_HOMEYZ c=0 r=0 +"Calibrate Z" +"Calibrar Z" + +#MSG_CALIBRATE_PINDA c=17 r=1 +"Calibrate" +"Calibrar" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Calibrando XYZ. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic." + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Calibrando Z" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Calibrando Z" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Calibrando Z. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic." + +#MSG_HOMEYZ_DONE c=0 r=0 +"Calibration done" +"Calibracion OK" + +#MSG_MENU_CALIBRATION c=0 r=0 +"Calibration" +"Calibracion" + +#MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 +"Cannot enter subdir: " +"Cannot enter subdir: " + +#MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 +"Cannot open subdir" +"Cannot open subdir" + +#MSG_SD_INSERTED c=0 r=0 +"Card inserted" +"Tarjeta insertada" + +#MSG_SD_REMOVED c=0 r=0 +"Card removed" +"Tarjeta retirada" + +#MSG_NOT_COLOR c=0 r=0 +"Color not correct" +"Color no homogeneo" + +#MSG_COOLDOWN c=0 r=0 +"Cooldown" +"Enfriar" + +#MSG_CRASHDETECT_ON c=0 r=0 +"Crash det. [on]" +"\x00" + +#MSG_CRASHDETECT_NA c=0 r=0 +"Crash det. [N/A]" +"\x00" + +#MSG_CRASHDETECT_OFF c=0 r=0 +"Crash det. [off]" +"\x00" + +#MSG_CRASH_DETECTED c=20 r=1 +"Crash detected." +"\x00" + +#MSG_CURRENT c=19 r=1 +"Current" +"Actual" + +#MSG_DATE c=17 r=1 +"Date:" +"\x00" + +#MSG_DISABLE_STEPPERS c=0 r=0 +"Disable steppers" +"Apagar motores" + +#MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +"Distancia entre la punta del nozzle y la superficie de la heatbed aun no fijada. Por favor siga el manual, capitulo First steps, First layer calibration." + +#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +"Do you want to repeat last step to readjust distance between nozzle and heatbed?" +"Quieres repetir el ultimo paso para reajustar la distancia nozzle-heatbed?" + +#MSG_CLEAN_NOZZLE_E c=20 r=8 +"E calibration finished. Please clean the nozzle. Click when done." +"E calibrado. Limpia nozzle. Haz clic una vez terminado." + +#MSG_EXTRUDER_CORRECTION c=9 r=0 +"E-correct" +"\x00" + +#MSG_END_FILE_LIST c=0 r=0 +"End file list" +"End file list" + +#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 +"Endstop not hit" +"Tope no alcanzado" + +#MSG_SELFTEST_ENDSTOP c=0 r=0 +"Endstop" +"Tope final" + +#MSG_ENDSTOPS_HIT c=0 r=0 +"endstops hit: " +"endstops hit: " + +#MSG_SELFTEST_ENDSTOPS c=0 r=0 +"Endstops" +"Topes finales" + +#MSG_Enqueing c=0 r=0 +"enqueing \x22" +"enqueing \x22" + +#MSG_STACK_ERROR c=20 r=4 +"Error - static memory has been overwritten" +"\x00" + +#MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 +"error writing to file" +"error writing to file" + +#MSG_FSENS_NOT_RESPONDING c=20 r=4 +"ERROR: Filament sensor is not responding, please check connection." +"\x00" + +#MSG_ERROR c=0 r=0 +"ERROR:" +"ERROR:" + +#MSG_EXTRUDER_1 c=17 r=1 +"Extruder 1" +"Extrusor 1" + +#MSG_EXTRUDER_2 c=17 r=1 +"Extruder 2" +"Extrusor 2" + +#MSG_EXTRUDER_3 c=17 r=1 +"Extruder 3" +"Extrusor 3" + +#MSG_EXTRUDER_4 c=17 r=1 +"Extruder 4" +"Extrusor 4" + +#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 +"Extruder fan:" +"\x00" + +#MSG_INFO_EXTRUDER c=15 r=1 +"Extruder info" +"\x00" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Extruir" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Extruir" + +#MSG_FSENS_AUTOLOAD_ON c=17 r=1 +"F. autoload [on]" +"\x00" + +#MSG_FSENS_AUTOLOAD_NA c=17 r=1 +"F. autoload [N/A]" +"\x00" + +#MSG_FSENS_AUTOLOAD_OFF c=17 r=1 +"F. autoload [off]" +"\x00" + +#MSG_FAN_SPEED c=14 r=0 +"Fan speed" +"Velocidad Vent." + +#MSG_SELFTEST_FAN c=20 r=0 +"Fan test" +"Test ventiladores" + +#MSG_FANS_CHECK_ON c=17 r=1 +"Fans check [on]" +"\x00" + +#MSG_FANS_CHECK_OFF c=17 r=1 +"Fans check [off]" +"\x00" + +#MSG_FSENSOR_ON c=0 r=0 +"Fil. sensor [on]" +"\x00" + +#MSG_FSENSOR_NA c=0 r=0 +"Fil. sensor [N/A]" +"\x00" + +#MSG_FSENSOR_OFF c=0 r=0 +"Fil. sensor [off]" +"\x00" + +#MSG_FILAMENT_CLEAN c=20 r=2 +"Filament extruding & with correct color?" +"Es el nuevo color nitido?" + +#MSG_NOT_LOADED c=19 r=0 +"Filament not loaded" +"Fil. no introducido" + +#MSG_FILAMENT_SENSOR c=20 r=0 +"Filament sensor" +"\x00" + +#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 +"Filament sensor:" +"\x00" + +#MSG_STATS_FILAMENTUSED c=20 r=0 +"Filament used: " +"Filamento usado: " + +#MSG_FILE_INCOMPLETE c=20 r=2 +"File incomplete. Continue anyway?" +"\x00" + +#MSG_SD_FILE_OPENED c=0 r=0 +"File opened: " +"File opened: " + +#MSG_SD_FILE_SELECTED c=0 r=0 +"File selected" +"File selected" + +#MSG_FINISHING_MOVEMENTS c=20 r=1 +"Finishing movements" +"Term. movimientos" + +#MSG_V2_CALIBRATION c=17 r=1 +"First layer cal." +"Cal. primera cap." + +#MSG_WIZARD_SELFTEST c=20 r=8 +"First, I will run the selftest to check most common assembly problems." +"Primero, hare el Selftest para comprobar los problemas de montaje mas comunes." + +#MSG_FLOW c=0 r=0 +"Flow" +"Flujo" + +#MSG_PRUSA3D_FORUM c=0 r=0 +"forum.prusa3d.com" +"forum.prusa3d.com" + +#MSG_SELFTEST_COOLING_FAN c=20 r=0 +"Front print fan?" +"Vent. frontal?" + +#MSG_BED_CORRECTION_FRONT c=14 r=1 +"Front side[um]" +"Frontal [um]" + +#MSG_SELFTEST_FANS c=0 r=0 +"Front/left fans" +"\x00" + +#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 +"Heater/Thermistor" +"Hotend" + +#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 +"Heating disabled by safety timer." +"\x00" + +#MSG_HEATING_COMPLETE c=20 r=0 +"Heating done." +"Calentamiento final." + +#MSG_HEATING c=0 r=0 +"Heating" +"Calentando..." + +#MSG_WIZARD_WELCOME c=20 r=7 +"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +"Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?" + +#MSG_PRUSA3D_HOWTO c=0 r=0 +"howto.prusa3d.com" +"howto.prusa3d.com" + +#MSG_CHANGE_EXTR c=20 r=1 +"Change extruder" +"Cambiar extrusor." + +#MSG_FILAMENTCHANGE c=0 r=0 +"Change filament" +"Cambiar filamento" + +#MSG_CNG_SDCARD c=0 r=0 +"Change SD card" +"Change SD card" + +#MSG_CHANGE_SUCCESS c=0 r=0 +"Change success!" +"Cambio correcto" + +#MSG_CORRECTLY c=20 r=0 +"Changed correctly?" +"Cambiado correct.?" + +#MSG_CHANGING_FILAMENT c=20 r=0 +"Changing filament!" +"Cambiando filamento" + +#MSG_SELFTEST_CHECK_BED c=20 r=0 +"Checking bed " +"Control heatbed" + +#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 +"Checking endstops" +"Control topes" + +#MSG_SELFTEST_CHECK_HOTEND c=20 r=0 +"Checking hotend " +"Control hotend " + +#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 +"Checking sensors " +"\x00" + +#MSG_SELFTEST_CHECK_X c=20 r=0 +"Checking X axis " +"Control tope X" + +#MSG_SELFTEST_CHECK_Y c=20 r=0 +"Checking Y axis " +"Control tope Y" + +#MSG_SELFTEST_CHECK_Z c=20 r=0 +"Checking Z axis " +"Control tope Z" + +#MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 +"checksum mismatch, Last Line: " +"checksum mismatch, Last Line: " + +#MSG_CHOOSE_EXTRUDER c=20 r=1 +"Choose extruder:" +"Elegir extrusor:" + +#MSG_WIZARD_XYZ_CAL c=20 r=8 +"I will run xyz calibration now. It will take approx. 12 mins." +"Hare la calibracion XYZ. Tardara 12 min. aproximadamente." + +#MSG_WIZARD_Z_CAL c=20 r=8 +"I will run z calibration now." +"Voy a hacer Calibracion Z ahora." + +#MSG_WIZARD_V2_CAL_2 c=20 r=12 +"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +"Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el mando, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual." + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Improving bed calibration point" +"Mejorando punto de calibracion heatbed" + +#MSG_WATCH c=0 r=0 +"Info screen" +"Monitorizar" + +#MSG_INIT_SDCARD c=0 r=0 +"Init. SD card" +"Init. SD card" + +#MSG_FILAMENT_LOADING_T0 c=20 r=4 +"Insert filament into extruder 1. Click when done." +"Insertar filamento en el extrusor 1. Haz clic una vez terminado." + +#MSG_FILAMENT_LOADING_T1 c=20 r=4 +"Insert filament into extruder 2. Click when done." +"Insertar filamento en el extrusor 2. Haz clic una vez terminado." + +#MSG_FILAMENT_LOADING_T2 c=20 r=4 +"Insert filament into extruder 3. Click when done." +"Insertar filamento en el extrusor 3. Haz clic una vez terminado." + +#MSG_FILAMENT_LOADING_T3 c=20 r=4 +"Insert filament into extruder 4. Click when done." +"Insertar filamento en el extrusor 4. Haz clic una vez terminado." + +#MSG_INSERT_FILAMENT c=20 r=0 +"Insert filament" +"Introducir filamento" + +#MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +"Is filament loaded?" +"Esta el filamento cargado?" + +#MSG_WIZARD_PLA_FILAMENT c=20 r=2 +"Is it PLA filament?" +"Es el filamento PLA?" + +#MSG_PLA_FILAMENT_LOADED c=20 r=2 +"Is PLA filament loaded?" +"Esta el filamento PLA cargado?" + +#MSG_STEEL_SHEET_CHECK c=20 r=2 +"Is steel sheet on heatbed?" +"\x00" + +#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 +"Iteration " +"Reiteracion " + +#MSG_KILLED c=0 r=0 +"KILLED. " +"PARADA DE EMERGENCIA" + +#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 +"Left hotend fan?" +"Vent. izquierdo?" + +#MSG_BED_CORRECTION_LEFT c=14 r=1 +"Left side [um]" +"Izquierda [um]" + +#MSG_LEFT c=12 r=1 +"Left:" +"\x00" + +#MSG_BABYSTEP_Z c=0 r=0 +"Live adjust Z" +"Micropaso Eje Z" + +#MSG_LOAD_ALL c=0 r=0 +"Load all" +"Intr. todos fil." + +#MSG_LOAD_FILAMENT_1 c=17 r=0 +"Load filament 1" +"Introducir fil. 1" + +#MSG_LOAD_FILAMENT_2 c=17 r=0 +"Load filament 2" +"Introducir fil. 2" + +#MSG_LOAD_FILAMENT_3 c=17 r=0 +"Load filament 3" +"Introducir fil. 3" + +#MSG_LOAD_FILAMENT_4 c=17 r=0 +"Load filament 4" +"Introducir fil. 4" + +#MSG_LOAD_FILAMENT c=17 r=0 +"Load filament" +"Introducir filam." + +#MSG_LOADING_COLOR c=0 r=0 +"Loading color" +"Cambiando color" + +#MSG_LOADING_FILAMENT c=20 r=0 +"Loading filament" +"Introduciendo filam." + +#MSG_LOOSE_PULLEY c=20 r=1 +"Loose pulley" +"Polea suelta" + +#MSG_M104_INVALID_EXTRUDER c=0 r=0 +"M104 Invalid extruder " +"M104 Invalid extruder " + +#MSG_M105_INVALID_EXTRUDER c=0 r=0 +"M105 Invalid extruder " +"M105 Invalid extruder " + +#MSG_M109_INVALID_EXTRUDER c=0 r=0 +"M109 Invalid extruder " +"M109 Invalid extruder " + +#MSG_M117_V2_CALIBRATION c=25 r=1 +"M117 First layer cal." +"M117 Cal. primera cap." + +#MSG_M200_INVALID_EXTRUDER c=0 r=0 +"M200 Invalid extruder " +"M200 Invalid extruder " + +#MSG_M218_INVALID_EXTRUDER c=0 r=0 +"M218 Invalid extruder " +"M218 Invalid extruder " + +#MSG_M221_INVALID_EXTRUDER c=0 r=0 +"M221 Invalid extruder " +"M221 Invalid extruder " + +#MSG_MAIN c=0 r=0 +"Main" +"Menu principal" + +#MSG_MARK_FIL c=20 r=8 +"Mark filament 100mm from extruder body. Click when done." +"Marque el filamento 100 mm por encima del final del extrusor. Haz clic una vez terminado." + +#MSG_MEASURED_SKEW c=15 r=1 +"Measured skew:" +"\x00" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 +"Measuring reference height of calibration point" +"Midiendo altura del punto de calibracion" + +#MSG_MESH_BED_LEVELING c=0 r=0 +"Mesh Bed Leveling" +"Mesh Bed Leveling" + +#MSG_STEALTH_MODE_OFF c=0 r=0 +"Mode [Normal]" +"\x00" + +#MSG_SILENT_MODE_ON c=0 r=0 +"Mode [silent]" +"Modo [silencio]" + +#MSG_STEALTH_MODE_ON c=0 r=0 +"Mode [Stealth]" +"\x00" + +#MSG_AUTO_MODE_ON c=0 r=0 +"Mode [auto power]" +"\x00" + +#MSG_SILENT_MODE_OFF c=0 r=0 +"Mode [high power]" +"Modo [rend.pleno]" + +#MSG_SELFTEST_MOTOR c=0 r=0 +"Motor" +"Motor" + +#MSG_MOVE_AXIS c=0 r=0 +"Move axis" +"Mover ejes" + +#MSG_MOVE_X c=0 r=0 +"Move X" +"Mover X" + +#MSG_MOVE_Y c=0 r=0 +"Move Y" +"Mover Y" + +#MSG_MOVE_Z c=0 r=0 +"Move Z" +"Mover Z" + +#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 +"New firmware version available:" +"Nuevo firmware disponible:" + +#MSG_ERR_NO_CHECKSUM c=0 r=0 +"No Checksum with line number, Last Line: " +"No Checksum with line number, Last Line: " + +#MSG_NO_MOVE c=0 r=0 +"No move." +"Sin movimiento" + +#MSG_NO_CARD c=0 r=0 +"No SD card" +"No hay tarjeta SD" + +#MSG_ERR_NO_THERMISTORS c=0 r=0 +"No thermistors - no temperature" +"No thermistors - no temperature" + +#MSG_NO c=0 r=0 +"No" +"No" + +#MSG_SELFTEST_NOTCONNECTED c=0 r=0 +"Not connected" +"No hay conexion " + +#MSG_SELFTEST_FAN_NO c=19 r=0 +"Not spinning" +"Ventilador no gira" + +#MSG_WIZARD_V2_CAL c=20 r=8 +"Now I will calibrate distance between tip of the nozzle and heatbed surface." +"Voy a calibrar la distancia entre la punta del nozzle y la superficie de la heatbed." + +#MSG_WIZARD_WILL_PREHEAT c=20 r=4 +"Now I will preheat nozzle for PLA." +"Voy a precalentar el nozzle para PLA ahora." + +#MSG_INFO_NOZZLE_FAN c=11 r=1 +"Nozzle FAN:" +"\x00" + +#MSG_NOZZLE c=0 r=0 +"Nozzle" +"Nozzle" + +#MSG_NOZZLE1 c=0 r=0 +"Nozzle2" +"Nozzle2" + +#MSG_NOZZLE2 c=0 r=0 +"Nozzle3" +"Nozzle3" + +#MSG_OK c=0 r=0 +"ok" +"ok" + +#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 +"Old settings found. Default PID, Esteps etc. will be set." +"\x00" + +#MSG_SD_OPEN_FILE_FAIL c=0 r=0 +"open failed, File: " +"open failed, File: " + +#MSG_ENDSTOP_OPEN c=0 r=0 +"open" +"open" + +#MSG_SD_OPENROOT_FAIL c=0 r=0 +"openRoot failed" +"openRoot failed" + +#MSG_PAUSE_PRINT c=0 r=0 +"Pause print" +"Pausar impresion" + +#MSG_PICK_Z c=0 r=0 +"Pick print" +"Esc. Modelo Adecuado" + +#MSG_PID_RUNNING c=20 r=1 +"PID cal. " +"Cal. PID " + +#MSG_PID_FINISHED c=20 r=1 +"PID cal. finished" +"Cal. PID terminada" + +#MSG_PID_EXTRUDER c=17 r=1 +"PID calibration" +"Calibracion PID" + +#MSG_PINDA_PREHEAT c=20 r=1 +"PINDA Heating" +"Calentando PINDA" + +#MSG_PAPER c=20 r=8 +"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +"Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente." + +#MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +"Please clean heatbed and then press the knob." +"Limpia la superficie de la heatbed, por favor, y haz clic" + +#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +"Please clean the nozzle for calibration. Click when done." +"Limpia nozzle para calibracion. Click cuando acabes." + +#MSG_SELFTEST_PLEASECHECK c=0 r=0 +"Please check :" +"Controla :" + +#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +"Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard" + +#MSG_WIZARD_LOAD_FILAMENT c=20 r=8 +"Please insert PLA filament to the extruder, then press knob to load it." +"Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo." + +#MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 +"Please load PLA filament and then resume Wizard by rebooting the printer." +"Carga filamento PLA, por favor, y reinicia la impresora para continuar con el Wizard" + +#MSG_PLEASE_LOAD_PLA c=20 r=4 +"Please load PLA filament first." +"Carga el filamento PLA primero por favor." + +#MSG_CHECK_IDLER c=20 r=4 +"Please open idler and remove filament manually." +"\x00" + +#MSG_PLACE_STEEL_SHEET c=20 r=4 +"Please place steel sheet on heatbed." +"\x00" + +#MSG_PRESS_TO_UNLOAD c=20 r=4 +"Please press the knob to unload filament" +"\x00" + +#MSG_PULL_OUT_FILAMENT c=20 r=4 +"Please pull out filament immediately" +"\x00" + +#MSG_REMOVE_STEEL_SHEET c=20 r=4 +"Please remove steel sheet from heatbed." +"\x00" + +#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 +"Please upgrade." +"Actualizar por favor" + +#MSG_PLEASE_WAIT c=20 r=0 +"Please wait" +"Por Favor Esperar" + +#MSG_POWERUP c=0 r=0 +"PowerUp" +"PowerUp" + +#MSG_PREHEAT_NOZZLE c=20 r=0 +"Preheat the nozzle!" +"Precalentar extrusor" + +#MSG_PREHEAT c=0 r=0 +"Preheat" +"Precalentar" + +#MSG_WIZARD_HEATING c=20 r=3 +"Preheating nozzle. Please wait." +"Precalentando nozzle. Espera por favor." + +#MSG_PREPARE_FILAMENT c=20 r=1 +"Prepare new filament" +"Preparar filamento" + +#MSG_PRESS_TO_PREHEAT c=20 r=4 +"Press knob to preheat nozzle and continue." +"\x00" + +#MSG_PRINT_ABORTED c=20 r=0 +"Print aborted" +"Impresion cancelada" + +#MSG_INFO_PRINT_FAN c=11 r=1 +"Print FAN: " +"\x00" + +#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 +"Print fan:" +"\x00" + +#MSG_CARD_MENU c=0 r=0 +"Print from SD" +"Menu tarjeta SD" + +#MSG_PRINT_PAUSED c=20 r=1 +"Print paused" +"Impresion en pausa" + +#MSG_STATS_PRINTTIME c=20 r=0 +"Print time: " +"Tiempo de imp.:" + +#MSG_PRINTER_DISCONNECTED c=20 r=1 +"Printer disconnected" +"\x00" + +#MSG_ERR_KILLED c=0 r=0 +"Printer halted. kill() called!" +"Printer halted. kill() called!" + +#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +"Impresora no esta calibrada todavia. Por favor usa el manual, capitulo First steps, Calibration flow." + +#MSG_ERR_STOPPED c=0 r=0 +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" + +#WELCOME_MSG c=20 r=0 +"Prusa i3 MK3 ready." +"Prusa i3 MK3 prep." + +#MSG_PRUSA3D c=0 r=0 +"prusa3d.com" +"prusa3d.com" + +#MSG_BED_CORRECTION_REAR c=14 r=1 +"Rear side [um]" +"Trasera [um]" + +#MSG_RECOVERING_PRINT c=20 r=1 +"Recovering print " +"\x00" + +#MSG_M119_REPORT c=0 r=0 +"Reporting endstop status" +"Reporting endstop status" + +#MSG_RESEND c=0 r=0 +"Resend: " +"Resend: " + +#MSG_CALIBRATE_BED_RESET c=0 r=0 +"Reset XYZ calibr." +"Reset XYZ calibr." + +#MSG_BED_CORRECTION_RESET c=0 r=0 +"Reset" +"Reset" + +#MSG_RESUME_PRINT c=0 r=0 +"Resume print" +"Reanudar impres." + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Resumiendo impresion" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Resumiendo impresion" + +#MSG_BED_CORRECTION_RIGHT c=14 r=1 +"Right side[um]" +"Derecha [um]" + +#MSG_RIGHT c=12 r=1 +"Right:" +"\x00" + +#MSG_E_CAL_KNOB c=20 r=8 +"Rotate knob until mark reaches extruder body. Click when done." +"Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haz clic una vez terminado." + +#MSG_SECOND_SERIAL_ON c=17 r=1 +"RPi port [on]" +"\x00" + +#MSG_SECOND_SERIAL_OFF c=17 r=1 +"RPi port [off]" +"\x00" + +#MSG_WIZARD_RERUN c=20 r=7 +"Running Wizard will delete current calibration results and start from the beginning. Continue?" +"Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 +"SD card [normal]" +"SD card [normal]" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 +"SD card [FlshAir]" +"SD card [FlshAir]" + +#MSG_SD_CARD_OK c=0 r=0 +"SD card ok" +"SD card ok" + +#MSG_SD_INIT_FAIL c=0 r=0 +"SD init fail" +"SD init fail" + +#MSG_SD_PRINTING_BYTE c=0 r=0 +"SD printing byte " +"SD printing byte " + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Searching bed calibration point" +"Buscando punto de calibracion heatbed" + +#MSG_LANGUAGE_SELECT c=0 r=0 +"Select language" +"Cambiae el idioma" + +#MSG_SELFTEST_OK c=0 r=0 +"Self test OK" +"Self test OK" + +#MSG_SELFTEST_START c=20 r=0 +"Self test start " +"Inicio Selftest" + +#MSG_SELFTEST c=0 r=0 +"Selftest " +"Selftest" + +#MSG_SELFTEST_ERROR c=0 r=0 +"Selftest error !" +"Autotest error!" + +#MSG_SELFTEST_FAILED c=20 r=0 +"Selftest failed " +"Fallo Selftest" + +#MSG_FORCE_SELFTEST c=20 r=8 +"Selftest will be run to calibrate accurate sensorless rehoming." +"\x00" + +#MSG_SET_TEMPERATURE c=19 r=1 +"Set temperature:" +"Establecer temp.:" + +#MSG_SETTINGS c=0 r=0 +"Settings" +"Configuracion" + +#MSG_SEVERE_SKEW c=15 r=1 +"Severe skew:" +"\x00" + +#MSG_SHOW_END_STOPS c=17 r=1 +"Show end stops" +"Ensena tope final" + +#MSG_DWELL c=0 r=0 +"Sleep..." +"En espera" + +#MSG_SLIGHT_SKEW c=15 r=1 +"Slight skew:" +"\x00" + +#MSG_FILE_CNT c=20 r=4 +"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +"\x00" + +#MSG_SORT_NONE c=17 r=1 +"Sort: [None]" +"\x00" + +#MSG_SORT_TIME c=17 r=1 +"Sort: [Time]" +"\x00" + +#MSG_SORT_ALPHA c=17 r=1 +"Sort: [Alphabet]" +"\x00" + +#MSG_SORTING c=20 r=1 +"Sorting files" +"\x00" + +#MSG_SPEED c=0 r=0 +"Speed" +"Velocidad" + +#MSG_SELFTEST_FAN_YES c=19 r=0 +"Spinning" +"Ventilador gira" + +#MSG_TEMP_CAL_WARNING c=20 r=4 +"Stable ambient temperature 21-26C is needed a rigid stand is required." +"\x00" + +#MSG_STATISTICS c=0 r=0 +"Statistics " +"Estadisticas " + +#MSG_STEPPER_TOO_HIGH c=0 r=0 +"Steprate too high: " +"Steprate too high: " + +#MSG_STOP_PRINT c=0 r=0 +"Stop print" +"Detener impresion" + +#MSG_STOPPED c=0 r=0 +"STOPPED. " +"PARADA" + +#MSG_SUPPORT c=0 r=0 +"Support" +"Soporte" + +#MSG_SELFTEST_SWAPPED c=0 r=0 +"Swapped" +"\x00" + +#MSG_TEMP_CALIBRATION c=20 r=1 +"Temp. cal. " +"Cal. temp. " + +#MSG_TEMP_CALIBRATION_ON c=20 r=1 +"Temp. cal. [on]" +"Cal. temp. [ON]" + +#MSG_TEMP_CALIBRATION_OFF c=20 r=1 +"Temp. cal. [off]" +"Cal. temp. [OFF]" + +#MSG_CALIBRATION_PINDA_MENU c=17 r=1 +"Temp. calibration" +"Calibracion temp." + +#MSG_TEMP_CAL_FAILED c=20 r=8 +"Temperature calibration failed" +"\x00" + +#MSG_PINDA_NOT_CALIBRATED c=20 r=4 +"Temperature calibration has not been run yet" +"La temperatura de calibracion no ha sido ajustada" + +#MSG_TEMP_CALIBRATION_DONE c=20 r=12 +"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +"Calibracon temperatura terminada. Haz clic para continuar." + +#MSG_TEMPERATURE c=0 r=0 +"Temperature" +"Temperatura" + +#MSG_MENU_TEMPERATURES c=15 r=1 +"Temperatures" +"\x00" + +#MSG_STATS_TOTALFILAMENT c=20 r=0 +"Total filament :" +"Filamento total:" + +#MSG_STATS_TOTALPRINTTIME c=20 r=0 +"Total print time :" +"Tiempo total :" + +#MSG_ENDSTOP_HIT c=0 r=0 +"TRIGGERED" +"TRIGGERED" + +#MSG_TUNE c=0 r=0 +"Tune" +"Ajustar" + +#MSG_UNLOAD_ALL c=0 r=0 +"Unload all" +"Soltar todos fil." + +#MSG_UNLOAD_FILAMENT_1 c=17 r=0 +"Unload filament 1" +"Soltar fil. 1" + +#MSG_UNLOAD_FILAMENT_2 c=17 r=0 +"Unload filament 2" +"Soltar fil. 2" + +#MSG_UNLOAD_FILAMENT_3 c=17 r=0 +"Unload filament 3" +"Soltar fil. 3" + +#MSG_UNLOAD_FILAMENT_4 c=17 r=0 +"Unload filament 4" +"Soltar fil. 4" + +#MSG_UNLOAD_FILAMENT c=17 r=0 +"Unload filament" +"Soltar filamento" + +#MSG_UNLOADING_FILAMENT c=20 r=1 +"Unloading filament" +"Soltando filamento" + +#MSG_USED c=19 r=1 +"Used during print" +"Usado en impresion" + +#MSG_MENU_VOLTAGES c=15 r=1 +"Voltages" +"\x00" + +#MSG_SD_VOL_INIT_FAIL c=0 r=0 +"volume.init failed" +"volume.init failed" + +#MSG_USERWAIT c=0 r=0 +"Wait for user..." +"Esperando ordenes" + +#MSG_WAITING_TEMP c=20 r=3 +"Waiting for nozzle and bed cooling" +"Esperando enfriamiento de heatbed y extrusor." + +#MSG_WAITING_TEMP_PINDA c=20 r=3 +"Waiting for PINDA probe cooling" +"\x00" + +#MSG_CHANGED_BOTH c=20 r=4 +"Warning: both printer type and motherboard type changed." +"\x00" + +#MSG_CHANGED_MOTHERBOARD c=20 r=4 +"Warning: motherboard type changed." +"\x00" + +#MSG_CHANGED_PRINTER c=20 r=4 +"Warning: printer type changed." +"\x00" + +#MSG_FW_VERSION_UNKNOWN c=20 r=8 +"WARNING: This is an unofficial, unsupported build. Use at your own risk!" +"\x00" + +#MSG_UNLOAD_SUCCESSFUL c=20 r=2 +"Was filament unload successful?" +"\x00" + +#MSG_SELFTEST_WIRINGERROR c=0 r=0 +"Wiring error" +"Error de conexion" + +#MSG_WIZARD c=17 r=1 +"Wizard" +"Wizard" + +#MSG_SD_WORKDIR_FAIL c=0 r=0 +"workDir open failed" +"workDir open failed" + +#MSG_SD_WRITE_TO_FILE c=0 r=0 +"Writing to file: " +"Writing to file: " + +#MSG_XYZ_DETAILS c=19 r=1 +"XYZ cal. details" +"\x00" + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +"XYZ calibration all right. Skew will be corrected automatically." +"Calibracion XYZ correcta. La inclinacion se corregira automaticamente." + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +"XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +"Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration compromised. Front calibration points not reachable." +"Calibrazion XYZ comprometida. Puntos frontales no alcanzables." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration compromised. Left front calibration point not reachable." +"Calibrazion XYZ comprometida. Punto frontal izquierdo no alcanzable." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration compromised. Right front calibration point not reachable." +"Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable." + +#MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 +"XYZ calibration failed. Bed calibration point was not found." +"Calibracion XYZ fallada. Puntos de calibracion en heatbed no encontrados." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration failed. Front calibration points not reachable." +"Calibracion XYZ fallada. Puntos frontales no alcanzables." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration failed. Left front calibration point not reachable." +"Calibracion XYZ fallada. Punto frontal izquierdo no alcanzable." + +#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +"XYZ calibration failed. Please consult the manual." +"Calibracion XYZ fallada. Consulta el manual por favor." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration failed. Right front calibration point not reachable." +"Calibracion XYZ fallad. Punto frontal derecho no alcanzable." + +#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +"Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!" + +#MSG_Y_DISTANCE_FROM_MIN c=20 r=1 +"Y distance from min:" +"\x00" + +#MSG_YES c=0 r=0 +"Yes" +"Si" + +#MSG_FW_VERSION_ALPHA c=20 r=8 +"You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_FW_VERSION_BETA c=20 r=8 +"You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_WIZARD_QUIT c=20 r=8 +"You can always resume the Wizard from Calibration -> Wizard." +"Siempre puedes acceder al asistente desde Calibracion -> Wizard" + diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt new file mode 100644 index 00000000..b0b4d3f7 --- /dev/null +++ b/lang/lang_en_it.txt @@ -0,0 +1,1372 @@ +#MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 +" [off" +"\x00" + +#MSG_PLANNER_BUFFER_BYTES c=0 r=0 +" PlannerBufferBytes: " +" PlannerBufferBytes: " + +#MSG_FACTOR c=0 r=0 +" \002 Fact" +"\x00" + +#MSG_MAX c=0 r=0 +" \002 Max" +"\x00" + +#MSG_MIN c=0 r=0 +" \002 Min" +"\x00" + +#MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 +" cold extrusion prevented" +" cold extrusion prevented" + +#MSG_FREE_MEMORY c=0 r=0 +" Free Memory: " +" Free Memory: " + +#MSG_CONFIGURATION_VER c=0 r=0 +" Last Updated: " +" Last Updated: " + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" su 4" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" su 4" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 +" of 9" +" su 9" + +#MSG_MEASURED_OFFSET c=0 r=0 +"[0;0] point offset" +"\x00" + +#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +"\x00" + +#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +"\x00" + +#MSG_REFRESH c=0 r=0 +"\xf8Refresh" +"\xf8Refresh" + +#MSG_BABYSTEPPING_Z c=20 r=0 +"Adjusting Z" +"Compensazione Z" + +#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 +"All correct " +"Nessun errore" + +#MSG_WIZARD_DONE c=20 r=8 +"All is done. Happy printing!" +"Ben fatto. Buona stampa!" + +#MSG_ALL c=19 r=1 +"All" +"Tutti" + +#MSG_PRESS c=20 r=0 +"and press the knob" +"e cliccare manopola" + +#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +"Are left and right Z~carriages all up?" +"I carrelli Z sin/des sono altezza max?" + +#MSG_ADJUSTZ c=0 r=0 +"Auto adjust Z?" +"Autoregolare Z?" + +#MSG_AUTO_HOME c=0 r=0 +"Auto home" +"Trova origine" + +#MSG_AUTOLOAD_FILAMENT c=17 r=0 +"AutoLoad filament" +"\x00" + +#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +"Autoloading filament available only when filament sensor is turned on..." +"\x00" + +#MSG_AUTOLOADING_ENABLED c=20 r=4 +"Autoloading filament is active, just press the knob and insert filament..." +"\x00" + +#MSG_SELFTEST_AXIS_LENGTH c=0 r=0 +"Axis length" +"\x00" + +#MSG_SELFTEST_AXIS c=0 r=0 +"Axis" +"\x00" + +#MSG_BABYSTEPPING_X c=0 r=0 +"Babystepping X" +"Babystepping X" + +#MSG_BABYSTEPPING_Y c=0 r=0 +"Babystepping Y" +"Babystepping Y" + +#MSG_SELFTEST_BEDHEATER c=0 r=0 +"Bed / Heater" +"Letto/Riscald." + +#MSG_BED_DONE c=0 r=0 +"Bed done" +"Piatto fatto." + +#MSG_BED_HEATING c=0 r=0 +"Bed Heating" +"Riscald. letto" + +#MSG_BED_CORRECTION_MENU c=0 r=0 +"Bed level correct" +"Correz. liv.letto" + +#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 +"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +"Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset." + +#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 +"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +"Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset." + +#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 +"Bed leveling failed. Sensor triggered too high. Waiting for reset." +"Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset." + +#MSG_BED c=0 r=0 +"Bed" +"Letto" + +#MSG_BEGIN_FILE_LIST c=0 r=0 +"Begin file list" +"Begin file list" + +#MSG_MENU_BELT_STATUS c=15 r=1 +"Belt status" +"\x00" + +#MSG_RECOVER_PRINT c=20 r=2 +"Blackout occurred. Recover print?" +"\x00" + +#MSG_CALIBRATE_E c=20 r=1 +"Calibrate E" +"Calibra E" + +#MSG_CALIBRATE_BED c=0 r=0 +"Calibrate XYZ" +"Calibra XYZ" + +#MSG_HOMEYZ c=0 r=0 +"Calibrate Z" +"Calibra Z" + +#MSG_CALIBRATE_PINDA c=17 r=1 +"Calibrate" +"Calibrare" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare." + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Calibrando Z" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Calibrando Z" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare." + +#MSG_HOMEYZ_DONE c=0 r=0 +"Calibration done" +"Calibrazione OK" + +#MSG_MENU_CALIBRATION c=0 r=0 +"Calibration" +"Calibrazione" + +#MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 +"Cannot enter subdir: " +"Cannot enter subdir: " + +#MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 +"Cannot open subdir" +"Cannot open subdir" + +#MSG_SD_INSERTED c=0 r=0 +"Card inserted" +"SD inserita" + +#MSG_SD_REMOVED c=0 r=0 +"Card removed" +"SD rimossa" + +#MSG_NOT_COLOR c=0 r=0 +"Color not correct" +"Colore non puro" + +#MSG_COOLDOWN c=0 r=0 +"Cooldown" +"Raffredda" + +#MSG_CRASHDETECT_ON c=0 r=0 +"Crash det. [on]" +"\x00" + +#MSG_CRASHDETECT_NA c=0 r=0 +"Crash det. [N/A]" +"\x00" + +#MSG_CRASHDETECT_OFF c=0 r=0 +"Crash det. [off]" +"\x00" + +#MSG_CRASH_DETECTED c=20 r=1 +"Crash detected." +"\x00" + +#MSG_CURRENT c=19 r=1 +"Current" +"Attuale" + +#MSG_DATE c=17 r=1 +"Date:" +"Data" + +#MSG_DISABLE_STEPPERS c=0 r=0 +"Disable steppers" +"Disabilit motori" + +#MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +"Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration." + +#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +"Do you want to repeat last step to readjust distance between nozzle and heatbed?" +"Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?" + +#MSG_CLEAN_NOZZLE_E c=20 r=8 +"E calibration finished. Please clean the nozzle. Click when done." +"Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare." + +#MSG_EXTRUDER_CORRECTION c=9 r=0 +"E-correct" +"\x00" + +#MSG_END_FILE_LIST c=0 r=0 +"End file list" +"End file list" + +#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 +"Endstop not hit" +"Finec. fuori por." + +#MSG_SELFTEST_ENDSTOP c=0 r=0 +"Endstop" +"Finecorsa" + +#MSG_ENDSTOPS_HIT c=0 r=0 +"endstops hit: " +"endstops hit: " + +#MSG_SELFTEST_ENDSTOPS c=0 r=0 +"Endstops" +"Finecorsa (2)" + +#MSG_Enqueing c=0 r=0 +"enqueing \x22" +"enqueing \x22" + +#MSG_STACK_ERROR c=20 r=4 +"Error - static memory has been overwritten" +"\x00" + +#MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 +"error writing to file" +"error writing to file" + +#MSG_FSENS_NOT_RESPONDING c=20 r=4 +"ERROR: Filament sensor is not responding, please check connection." +"\x00" + +#MSG_ERROR c=0 r=0 +"ERROR:" +"ERRORE:" + +#MSG_EXTRUDER_1 c=17 r=1 +"Extruder 1" +"Estrusore 1" + +#MSG_EXTRUDER_2 c=17 r=1 +"Extruder 2" +"Estrusore 2" + +#MSG_EXTRUDER_3 c=17 r=1 +"Extruder 3" +"Estrusore 3" + +#MSG_EXTRUDER_4 c=17 r=1 +"Extruder 4" +"Estrusore 4" + +#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 +"Extruder fan:" +"\x00" + +#MSG_INFO_EXTRUDER c=15 r=1 +"Extruder info" +"\x00" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Muovi Estrusore" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Muovi Estrusore" + +#MSG_FSENS_AUTOLOAD_ON c=17 r=1 +"F. autoload [on]" +"\x00" + +#MSG_FSENS_AUTOLOAD_NA c=17 r=1 +"F. autoload [N/A]" +"\x00" + +#MSG_FSENS_AUTOLOAD_OFF c=17 r=1 +"F. autoload [off]" +"\x00" + +#MSG_FAN_SPEED c=14 r=0 +"Fan speed" +"Velocita vent." + +#MSG_SELFTEST_FAN c=20 r=0 +"Fan test" +"Prova del ventilator" + +#MSG_FANS_CHECK_ON c=17 r=1 +"Fans check [on]" +"\x00" + +#MSG_FANS_CHECK_OFF c=17 r=1 +"Fans check [off]" +"\x00" + +#MSG_FSENSOR_ON c=0 r=0 +"Fil. sensor [on]" +"\x00" + +#MSG_FSENSOR_NA c=0 r=0 +"Fil. sensor [N/A]" +"\x00" + +#MSG_FSENSOR_OFF c=0 r=0 +"Fil. sensor [off]" +"\x00" + +#MSG_FILAMENT_CLEAN c=20 r=2 +"Filament extruding & with correct color?" +"Il colore e' nitido?" + +#MSG_NOT_LOADED c=19 r=0 +"Filament not loaded" +"Fil. non caricato" + +#MSG_FILAMENT_SENSOR c=20 r=0 +"Filament sensor" +"\x00" + +#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 +"Filament sensor:" +"\x00" + +#MSG_STATS_FILAMENTUSED c=20 r=0 +"Filament used: " +"Filamento usato:" + +#MSG_FILE_INCOMPLETE c=20 r=2 +"File incomplete. Continue anyway?" +"\x00" + +#MSG_SD_FILE_OPENED c=0 r=0 +"File opened: " +"File opened: " + +#MSG_SD_FILE_SELECTED c=0 r=0 +"File selected" +"File selected" + +#MSG_FINISHING_MOVEMENTS c=20 r=1 +"Finishing movements" +"Arresto in corso" + +#MSG_V2_CALIBRATION c=17 r=1 +"First layer cal." +"Cal. primo layer." + +#MSG_WIZARD_SELFTEST c=20 r=8 +"First, I will run the selftest to check most common assembly problems." +"Anzitutto avviero il Self Test per controllare gli errori di assemblaggio piu comuni." + +#MSG_FLOW c=0 r=0 +"Flow" +"Flusso" + +#MSG_PRUSA3D_FORUM c=0 r=0 +"forum.prusa3d.com" +"forum.prusa3d.com" + +#MSG_SELFTEST_COOLING_FAN c=20 r=0 +"Front print fan?" +"Vent di stampa ant.?" + +#MSG_BED_CORRECTION_FRONT c=14 r=1 +"Front side[um]" +"Fronte [um]" + +#MSG_SELFTEST_FANS c=0 r=0 +"Front/left fans" +"\x00" + +#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 +"Heater/Thermistor" +"Riscald./Termist." + +#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 +"Heating disabled by safety timer." +"\x00" + +#MSG_HEATING_COMPLETE c=20 r=0 +"Heating done." +"Riscald. completo" + +#MSG_HEATING c=0 r=0 +"Heating" +"Riscaldamento..." + +#MSG_WIZARD_WELCOME c=20 r=7 +"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +"Ciao, sono la tua stampante Original Prusa i3. Gradiresti aiuto attraverso il processo di configurazione?" + +#MSG_PRUSA3D_HOWTO c=0 r=0 +"howto.prusa3d.com" +"howto.prusa3d.com" + +#MSG_CHANGE_EXTR c=20 r=1 +"Change extruder" +"Cambio estrusore." + +#MSG_FILAMENTCHANGE c=0 r=0 +"Change filament" +"Camb. filamento" + +#MSG_CNG_SDCARD c=0 r=0 +"Change SD card" +"Change SD card" + +#MSG_CHANGE_SUCCESS c=0 r=0 +"Change success!" +"Cambio riuscito!" + +#MSG_CORRECTLY c=20 r=0 +"Changed correctly?" +"Cambiato corr.?" + +#MSG_CHANGING_FILAMENT c=20 r=0 +"Changing filament!" +"Cambiando filam." + +#MSG_SELFTEST_CHECK_BED c=20 r=0 +"Checking bed " +"Verifica letto" + +#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 +"Checking endstops" +"Verifica finecorsa" + +#MSG_SELFTEST_CHECK_HOTEND c=20 r=0 +"Checking hotend " +"Verifica ugello" + +#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 +"Checking sensors " +"\x00" + +#MSG_SELFTEST_CHECK_X c=20 r=0 +"Checking X axis " +"Verifica asse X" + +#MSG_SELFTEST_CHECK_Y c=20 r=0 +"Checking Y axis " +"Verifica asse Y" + +#MSG_SELFTEST_CHECK_Z c=20 r=0 +"Checking Z axis " +"Verifica asse Z" + +#MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 +"checksum mismatch, Last Line: " +"checksum mismatch, Last Line: " + +#MSG_CHOOSE_EXTRUDER c=20 r=1 +"Choose extruder:" +"Seleziona estrusore:" + +#MSG_WIZARD_XYZ_CAL c=20 r=8 +"I will run xyz calibration now. It will take approx. 12 mins." +"Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min." + +#MSG_WIZARD_Z_CAL c=20 r=8 +"I will run z calibration now." +"Adesso avviero una Calibrazione Z." + +#MSG_WIZARD_V2_CAL_2 c=20 r=12 +"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +"Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione." + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Improving bed calibration point" +"Perfezion. il letto punto di calibraz." + +#MSG_WATCH c=0 r=0 +"Info screen" +"Schermata info" + +#MSG_INIT_SDCARD c=0 r=0 +"Init. SD card" +"Init. SD card" + +#MSG_FILAMENT_LOADING_T0 c=20 r=4 +"Insert filament into extruder 1. Click when done." +"Inserire filamento nell'estrusore 1. Click per continuare." + +#MSG_FILAMENT_LOADING_T1 c=20 r=4 +"Insert filament into extruder 2. Click when done." +"Inserire filamento nell'estrusore 2. Click per continuare." + +#MSG_FILAMENT_LOADING_T2 c=20 r=4 +"Insert filament into extruder 3. Click when done." +"Inserire filamento nell'estrusore 3. Click per continuare." + +#MSG_FILAMENT_LOADING_T3 c=20 r=4 +"Insert filament into extruder 4. Click when done." +"Inserire filamento nell'estrusore 4. Click per continuare." + +#MSG_INSERT_FILAMENT c=20 r=0 +"Insert filament" +"Inserire filamento" + +#MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +"Is filament loaded?" +"Il filamento e stato caricato?" + +#MSG_WIZARD_PLA_FILAMENT c=20 r=2 +"Is it PLA filament?" +"E questo un filamento di PLA?" + +#MSG_PLA_FILAMENT_LOADED c=20 r=2 +"Is PLA filament loaded?" +"Il PLA e stato caricato?" + +#MSG_STEEL_SHEET_CHECK c=20 r=2 +"Is steel sheet on heatbed?" +"\x00" + +#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 +"Iteration " +"Reiterazione " + +#MSG_KILLED c=0 r=0 +"KILLED. " +"IN TILT." + +#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 +"Left hotend fan?" +"Vent SX sull'ugello?" + +#MSG_BED_CORRECTION_LEFT c=14 r=1 +"Left side [um]" +"Sinistra [um]" + +#MSG_LEFT c=12 r=1 +"Left:" +"Sinistra:" + +#MSG_BABYSTEP_Z c=0 r=0 +"Live adjust Z" +"Compensazione Z" + +#MSG_LOAD_ALL c=0 r=0 +"Load all" +"Caricare tutti" + +#MSG_LOAD_FILAMENT_1 c=17 r=0 +"Load filament 1" +"Caricare fil. 1" + +#MSG_LOAD_FILAMENT_2 c=17 r=0 +"Load filament 2" +"Caricare fil. 2" + +#MSG_LOAD_FILAMENT_3 c=17 r=0 +"Load filament 3" +"Caricare fil. 3" + +#MSG_LOAD_FILAMENT_4 c=17 r=0 +"Load filament 4" +"Caricare fil. 4" + +#MSG_LOAD_FILAMENT c=17 r=0 +"Load filament" +"Carica filamento" + +#MSG_LOADING_COLOR c=0 r=0 +"Loading color" +"Caricando colore" + +#MSG_LOADING_FILAMENT c=20 r=0 +"Loading filament" +"Caricando filam." + +#MSG_LOOSE_PULLEY c=20 r=1 +"Loose pulley" +"Puleggia lenta" + +#MSG_M104_INVALID_EXTRUDER c=0 r=0 +"M104 Invalid extruder " +"M104 Invalid extruder " + +#MSG_M105_INVALID_EXTRUDER c=0 r=0 +"M105 Invalid extruder " +"M105 Invalid extruder " + +#MSG_M109_INVALID_EXTRUDER c=0 r=0 +"M109 Invalid extruder " +"M109 Invalid extruder " + +#MSG_M117_V2_CALIBRATION c=25 r=1 +"M117 First layer cal." +"M117 Cal. primo layer." + +#MSG_M200_INVALID_EXTRUDER c=0 r=0 +"M200 Invalid extruder " +"M200 Invalid extruder " + +#MSG_M218_INVALID_EXTRUDER c=0 r=0 +"M218 Invalid extruder " +"M218 Invalid extruder " + +#MSG_M221_INVALID_EXTRUDER c=0 r=0 +"M221 Invalid extruder " +"M221 Invalid extruder " + +#MSG_MAIN c=0 r=0 +"Main" +"Menu principale" + +#MSG_MARK_FIL c=20 r=8 +"Mark filament 100mm from extruder body. Click when done." +"Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare." + +#MSG_MEASURED_SKEW c=15 r=1 +"Measured skew:" +"Incl. misurata:" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 +"Measuring reference height of calibration point" +"Misurare l'altezza di riferimento del punto di calibrazione" + +#MSG_MESH_BED_LEVELING c=0 r=0 +"Mesh Bed Leveling" +"Mesh livel. letto" + +#MSG_STEALTH_MODE_OFF c=0 r=0 +"Mode [Normal]" +"\x00" + +#MSG_SILENT_MODE_ON c=0 r=0 +"Mode [silent]" +"Modo [silenzioso]" + +#MSG_STEALTH_MODE_ON c=0 r=0 +"Mode [Stealth]" +"\x00" + +#MSG_AUTO_MODE_ON c=0 r=0 +"Mode [auto power]" +"\x00" + +#MSG_SILENT_MODE_OFF c=0 r=0 +"Mode [high power]" +"Mode [forte]" + +#MSG_SELFTEST_MOTOR c=0 r=0 +"Motor" +"Motore" + +#MSG_MOVE_AXIS c=0 r=0 +"Move axis" +"Muovi asse" + +#MSG_MOVE_X c=0 r=0 +"Move X" +"Muovi X" + +#MSG_MOVE_Y c=0 r=0 +"Move Y" +"Muovi Y" + +#MSG_MOVE_Z c=0 r=0 +"Move Z" +"Muovi Z" + +#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 +"New firmware version available:" +"Nuova versione del firmware disponibile" + +#MSG_ERR_NO_CHECKSUM c=0 r=0 +"No Checksum with line number, Last Line: " +"No Checksum with line number, Last Line: " + +#MSG_NO_MOVE c=0 r=0 +"No move." +"Nessun movimento." + +#MSG_NO_CARD c=0 r=0 +"No SD card" +"Nessuna SD" + +#MSG_ERR_NO_THERMISTORS c=0 r=0 +"No thermistors - no temperature" +"No thermistors - no temperature" + +#MSG_NO c=0 r=0 +"No" +"No" + +#MSG_SELFTEST_NOTCONNECTED c=0 r=0 +"Not connected" +"Non connesso" + +#MSG_SELFTEST_FAN_NO c=19 r=0 +"Not spinning" +"Non si gira" + +#MSG_WIZARD_V2_CAL c=20 r=8 +"Now I will calibrate distance between tip of the nozzle and heatbed surface." +"Adesso tarero lo stacco fra ugello e superfice del piatto." + +#MSG_WIZARD_WILL_PREHEAT c=20 r=4 +"Now I will preheat nozzle for PLA." +"Adesso preriscaldero l'ugello per PLA." + +#MSG_INFO_NOZZLE_FAN c=11 r=1 +"Nozzle FAN:" +"\x00" + +#MSG_NOZZLE c=0 r=0 +"Nozzle" +"Ugello" + +#MSG_NOZZLE1 c=0 r=0 +"Nozzle2" +"Nozzle2" + +#MSG_NOZZLE2 c=0 r=0 +"Nozzle3" +"Nozzle3" + +#MSG_OK c=0 r=0 +"ok" +"ok" + +#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 +"Old settings found. Default PID, Esteps etc. will be set." +"\x00" + +#MSG_SD_OPEN_FILE_FAIL c=0 r=0 +"open failed, File: " +"open failed, File: " + +#MSG_ENDSTOP_OPEN c=0 r=0 +"open" +"open" + +#MSG_SD_OPENROOT_FAIL c=0 r=0 +"openRoot failed" +"openRoot failed" + +#MSG_PAUSE_PRINT c=0 r=0 +"Pause print" +"Metti in pausa" + +#MSG_PICK_Z c=0 r=0 +"Pick print" +"Pick print" + +#MSG_PID_RUNNING c=20 r=1 +"PID cal. " +"Cal. PID" + +#MSG_PID_FINISHED c=20 r=1 +"PID cal. finished" +"Cal. PID completa" + +#MSG_PID_EXTRUDER c=17 r=1 +"PID calibration" +"Calibrazione PID" + +#MSG_PINDA_PREHEAT c=20 r=1 +"PINDA Heating" +"Riscald. PINDA" + +#MSG_PAPER c=20 r=8 +"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +"Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante." + +#MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +"Please clean heatbed and then press the knob." +"Per favore pulisci il piatto, poi premi la manopola." + +#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +"Please clean the nozzle for calibration. Click when done." +"Pulire l'ugello per la calibrazione, poi fare click." + +#MSG_SELFTEST_PLEASECHECK c=0 r=0 +"Please check :" +"Verificare:" + +#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +"Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante." + +#MSG_WIZARD_LOAD_FILAMENT c=20 r=8 +"Please insert PLA filament to the extruder, then press knob to load it." +"Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare." + +#MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 +"Please load PLA filament and then resume Wizard by rebooting the printer." +"Per favore carica filamento di PLA e riprendi il Wizard dopo aver riavviato la stampante." + +#MSG_PLEASE_LOAD_PLA c=20 r=4 +"Please load PLA filament first." +"Per favore prima caricare filamento di PLA." + +#MSG_CHECK_IDLER c=20 r=4 +"Please open idler and remove filament manually." +"\x00" + +#MSG_PLACE_STEEL_SHEET c=20 r=4 +"Please place steel sheet on heatbed." +"\x00" + +#MSG_PRESS_TO_UNLOAD c=20 r=4 +"Please press the knob to unload filament" +"\x00" + +#MSG_PULL_OUT_FILAMENT c=20 r=4 +"Please pull out filament immediately" +"\x00" + +#MSG_REMOVE_STEEL_SHEET c=20 r=4 +"Please remove steel sheet from heatbed." +"\x00" + +#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 +"Please upgrade." +"Prega aggiorna." + +#MSG_PLEASE_WAIT c=20 r=0 +"Please wait" +"Aspetta" + +#MSG_POWERUP c=0 r=0 +"PowerUp" +"PowerUp" + +#MSG_PREHEAT_NOZZLE c=20 r=0 +"Preheat the nozzle!" +"Preris. ugello!" + +#MSG_PREHEAT c=0 r=0 +"Preheat" +"Preriscalda" + +#MSG_WIZARD_HEATING c=20 r=3 +"Preheating nozzle. Please wait." +"Sto preriscaldando l'ugello. Per favore attendi." + +#MSG_PREPARE_FILAMENT c=20 r=1 +"Prepare new filament" +"Preparare filamento" + +#MSG_PRESS_TO_PREHEAT c=20 r=4 +"Press knob to preheat nozzle and continue." +"\x00" + +#MSG_PRINT_ABORTED c=20 r=0 +"Print aborted" +"Stampa abortita" + +#MSG_INFO_PRINT_FAN c=11 r=1 +"Print FAN: " +"\x00" + +#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 +"Print fan:" +"\x00" + +#MSG_CARD_MENU c=0 r=0 +"Print from SD" +"Stampa da SD" + +#MSG_PRINT_PAUSED c=20 r=1 +"Print paused" +"Stampa in pausa" + +#MSG_STATS_PRINTTIME c=20 r=0 +"Print time: " +"Tempo di stampa:" + +#MSG_PRINTER_DISCONNECTED c=20 r=1 +"Printer disconnected" +"\x00" + +#MSG_ERR_KILLED c=0 r=0 +"Printer halted. kill() called!" +"Printer halted. kill() called!" + +#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +"Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione." + +#MSG_ERR_STOPPED c=0 r=0 +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" + +#WELCOME_MSG c=20 r=0 +"Prusa i3 MK3 ready." +"Prusa i3 MK3 pronta." + +#MSG_PRUSA3D c=0 r=0 +"prusa3d.com" +"prusa3d.com" + +#MSG_BED_CORRECTION_REAR c=14 r=1 +"Rear side [um]" +"Retro [um]" + +#MSG_RECOVERING_PRINT c=20 r=1 +"Recovering print " +"\x00" + +#MSG_M119_REPORT c=0 r=0 +"Reporting endstop status" +"Reporting endstop status" + +#MSG_RESEND c=0 r=0 +"Resend: " +"Resend: " + +#MSG_CALIBRATE_BED_RESET c=0 r=0 +"Reset XYZ calibr." +"Reset XYZ calibr." + +#MSG_BED_CORRECTION_RESET c=0 r=0 +"Reset" +"Reset" + +#MSG_RESUME_PRINT c=0 r=0 +"Resume print" +"Riprendi stampa" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Riprendi stampa" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Riprendi stampa" + +#MSG_BED_CORRECTION_RIGHT c=14 r=1 +"Right side[um]" +"Destra [um]" + +#MSG_RIGHT c=12 r=1 +"Right:" +"Destra:" + +#MSG_E_CAL_KNOB c=20 r=8 +"Rotate knob until mark reaches extruder body. Click when done." +"Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare." + +#MSG_SECOND_SERIAL_ON c=17 r=1 +"RPi port [on]" +"\x00" + +#MSG_SECOND_SERIAL_OFF c=17 r=1 +"RPi port [off]" +"\x00" + +#MSG_WIZARD_RERUN c=20 r=7 +"Running Wizard will delete current calibration results and start from the beginning. Continue?" +"Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 +"SD card [normal]" +"SD card [normal]" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 +"SD card [FlshAir]" +"SD card [FlshAir]" + +#MSG_SD_CARD_OK c=0 r=0 +"SD card ok" +"SD card ok" + +#MSG_SD_INIT_FAIL c=0 r=0 +"SD init fail" +"SD init fail" + +#MSG_SD_PRINTING_BYTE c=0 r=0 +"SD printing byte " +"SD printing byte " + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Searching bed calibration point" +"Ricerca del letto punto di calibraz." + +#MSG_LANGUAGE_SELECT c=0 r=0 +"Select language" +"Seleziona lingua" + +#MSG_SELFTEST_OK c=0 r=0 +"Self test OK" +"Autotest OK" + +#MSG_SELFTEST_START c=20 r=0 +"Self test start " +"Avvia autotest" + +#MSG_SELFTEST c=0 r=0 +"Selftest " +"Autotest" + +#MSG_SELFTEST_ERROR c=0 r=0 +"Selftest error !" +"Autotest negativo" + +#MSG_SELFTEST_FAILED c=20 r=0 +"Selftest failed " +"Autotest fallito" + +#MSG_FORCE_SELFTEST c=20 r=8 +"Selftest will be run to calibrate accurate sensorless rehoming." +"\x00" + +#MSG_SET_TEMPERATURE c=19 r=1 +"Set temperature:" +"Imposta temperatura" + +#MSG_SETTINGS c=0 r=0 +"Settings" +"Impostazioni" + +#MSG_SEVERE_SKEW c=15 r=1 +"Severe skew:" +"Inc. rilevante:" + +#MSG_SHOW_END_STOPS c=17 r=1 +"Show end stops" +"Stato finecorsa" + +#MSG_DWELL c=0 r=0 +"Sleep..." +"Sospensione..." + +#MSG_SLIGHT_SKEW c=15 r=1 +"Slight skew:" +"Incl. leggera:" + +#MSG_FILE_CNT c=20 r=4 +"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +"\x00" + +#MSG_SORT_NONE c=17 r=1 +"Sort: [None]" +"\x00" + +#MSG_SORT_TIME c=17 r=1 +"Sort: [Time]" +"\x00" + +#MSG_SORT_ALPHA c=17 r=1 +"Sort: [Alphabet]" +"\x00" + +#MSG_SORTING c=20 r=1 +"Sorting files" +"\x00" + +#MSG_SPEED c=0 r=0 +"Speed" +"Velocita" + +#MSG_SELFTEST_FAN_YES c=19 r=0 +"Spinning" +"Gira" + +#MSG_TEMP_CAL_WARNING c=20 r=4 +"Stable ambient temperature 21-26C is needed a rigid stand is required." +"\x00" + +#MSG_STATISTICS c=0 r=0 +"Statistics " +"Statistiche" + +#MSG_STEPPER_TOO_HIGH c=0 r=0 +"Steprate too high: " +"Steprate too high: " + +#MSG_STOP_PRINT c=0 r=0 +"Stop print" +"Arresta stampa" + +#MSG_STOPPED c=0 r=0 +"STOPPED. " +"ARRESTATO." + +#MSG_SUPPORT c=0 r=0 +"Support" +"Support" + +#MSG_SELFTEST_SWAPPED c=0 r=0 +"Swapped" +"\x00" + +#MSG_TEMP_CALIBRATION c=20 r=1 +"Temp. cal. " +"Cal. temp. " + +#MSG_TEMP_CALIBRATION_ON c=20 r=1 +"Temp. cal. [on]" +"Cal. temp. [ON]" + +#MSG_TEMP_CALIBRATION_OFF c=20 r=1 +"Temp. cal. [off]" +"Cal. temp. [OFF]" + +#MSG_CALIBRATION_PINDA_MENU c=17 r=1 +"Temp. calibration" +"Taratura temp." + +#MSG_TEMP_CAL_FAILED c=20 r=8 +"Temperature calibration failed" +"\x00" + +#MSG_PINDA_NOT_CALIBRATED c=20 r=4 +"Temperature calibration has not been run yet" +"Taratura della temperatura non ancora eseguita" + +#MSG_TEMP_CALIBRATION_DONE c=20 r=12 +"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +"Taratura temperatura terminata. Fare click per continuare." + +#MSG_TEMPERATURE c=0 r=0 +"Temperature" +"Temperatura" + +#MSG_MENU_TEMPERATURES c=15 r=1 +"Temperatures" +"\x00" + +#MSG_STATS_TOTALFILAMENT c=20 r=0 +"Total filament :" +"Filamento tot:" + +#MSG_STATS_TOTALPRINTTIME c=20 r=0 +"Total print time :" +"Tempo stampa tot:" + +#MSG_ENDSTOP_HIT c=0 r=0 +"TRIGGERED" +"TRIGGERED" + +#MSG_TUNE c=0 r=0 +"Tune" +"Regola" + +#MSG_UNLOAD_ALL c=0 r=0 +"Unload all" +"Rilasciare tutti" + +#MSG_UNLOAD_FILAMENT_1 c=17 r=0 +"Unload filament 1" +"Rilasciare fil. 1" + +#MSG_UNLOAD_FILAMENT_2 c=17 r=0 +"Unload filament 2" +"Rilasciare fil. 1" + +#MSG_UNLOAD_FILAMENT_3 c=17 r=0 +"Unload filament 3" +"Rilasciare fil. 1" + +#MSG_UNLOAD_FILAMENT_4 c=17 r=0 +"Unload filament 4" +"Rilasciare fil. 1" + +#MSG_UNLOAD_FILAMENT c=17 r=0 +"Unload filament" +"Scarica filamento" + +#MSG_UNLOADING_FILAMENT c=20 r=1 +"Unloading filament" +"Rilasc. filamento" + +#MSG_USED c=19 r=1 +"Used during print" +"Usati nella stampa" + +#MSG_MENU_VOLTAGES c=15 r=1 +"Voltages" +"\x00" + +#MSG_SD_VOL_INIT_FAIL c=0 r=0 +"volume.init failed" +"volume.init failed" + +#MSG_USERWAIT c=0 r=0 +"Wait for user..." +"Attendendo utente" + +#MSG_WAITING_TEMP c=20 r=3 +"Waiting for nozzle and bed cooling" +"In attesa del raffreddamento della testina e del piatto" + +#MSG_WAITING_TEMP_PINDA c=20 r=3 +"Waiting for PINDA probe cooling" +"\x00" + +#MSG_CHANGED_BOTH c=20 r=4 +"Warning: both printer type and motherboard type changed." +"\x00" + +#MSG_CHANGED_MOTHERBOARD c=20 r=4 +"Warning: motherboard type changed." +"\x00" + +#MSG_CHANGED_PRINTER c=20 r=4 +"Warning: printer type changed." +"\x00" + +#MSG_FW_VERSION_UNKNOWN c=20 r=8 +"WARNING: This is an unofficial, unsupported build. Use at your own risk!" +"\x00" + +#MSG_UNLOAD_SUCCESSFUL c=20 r=2 +"Was filament unload successful?" +"\x00" + +#MSG_SELFTEST_WIRINGERROR c=0 r=0 +"Wiring error" +"Errore cablaggio" + +#MSG_WIZARD c=17 r=1 +"Wizard" +"Wizard" + +#MSG_SD_WORKDIR_FAIL c=0 r=0 +"workDir open failed" +"workDir open failed" + +#MSG_SD_WRITE_TO_FILE c=0 r=0 +"Writing to file: " +"Writing to file: " + +#MSG_XYZ_DETAILS c=19 r=1 +"XYZ cal. details" +"XYZ Cal. dettagli" + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +"XYZ calibration all right. Skew will be corrected automatically." +"Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata." + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +"XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +"Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration compromised. Front calibration points not reachable." +"Calibrazione XYZ compromessa. Punti anteriori non raggiungibili." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration compromised. Left front calibration point not reachable." +"Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration compromised. Right front calibration point not reachable." +"Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile." + +#MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 +"XYZ calibration failed. Bed calibration point was not found." +"Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration failed. Front calibration points not reachable." +"Calibrazione XYZ fallita. Punti anteriori non raggiungibili." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration failed. Left front calibration point not reachable." +"Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile." + +#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +"XYZ calibration failed. Please consult the manual." +"Calibrazione XYZ fallita. Si prega di consultare il manuale." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration failed. Right front calibration point not reachable." +"Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile." + +#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +"Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!" + +#MSG_Y_DISTANCE_FROM_MIN c=20 r=1 +"Y distance from min:" +"Distanza Y da min:" + +#MSG_YES c=0 r=0 +"Yes" +"Si" + +#MSG_FW_VERSION_ALPHA c=20 r=8 +"You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_FW_VERSION_BETA c=20 r=8 +"You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_WIZARD_QUIT c=20 r=8 +"You can always resume the Wizard from Calibration -> Wizard." +"E possibile proseguire la guide Wizard in qualsiasi momento attraverso Calibrazione -> Wizard." + diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt new file mode 100644 index 00000000..b8175edb --- /dev/null +++ b/lang/lang_en_pl.txt @@ -0,0 +1,1372 @@ +#MSG_EXTRUDER_CORRECTION_OFF c=6 r=0 +" [off" +"\x00" + +#MSG_PLANNER_BUFFER_BYTES c=0 r=0 +" PlannerBufferBytes: " +" PlannerBufferBytes: " + +#MSG_FACTOR c=0 r=0 +" \002 Fact" +" \002 Fact" + +#MSG_MAX c=0 r=0 +" \002 Max" +" \002 Max" + +#MSG_MIN c=0 r=0 +" \002 Min" +" \002 Min" + +#MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 +" cold extrusion prevented" +" cold extrusion prevented" + +#MSG_FREE_MEMORY c=0 r=0 +" Free Memory: " +" Free Memory: " + +#MSG_CONFIGURATION_VER c=0 r=0 +" Last Updated: " +" Last Updated: " + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" z 4" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 +" of 4" +" z 4" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 +" of 9" +" z 9" + +#MSG_MEASURED_OFFSET c=0 r=0 +"[0;0] point offset" +"\x00" + +#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +"\x00" + +#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +"\x00" + +#MSG_REFRESH c=0 r=0 +"\xf8Refresh" +"\xf8Obnovit" + +#MSG_BABYSTEPPING_Z c=20 r=0 +"Adjusting Z" +"Dostrojenie Z" + +#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 +"All correct " +"Wszystko OK " + +#MSG_WIZARD_DONE c=20 r=8 +"All is done. Happy printing!" +"Gotowe. Udanego druku!" + +#MSG_ALL c=19 r=1 +"All" +"Wszystko" + +#MSG_PRESS c=20 r=0 +"and press the knob" +"Nacisnij przycisk" + +#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +"Are left and right Z~carriages all up?" +"Oba wozki dojechaly do gornej ramy?" + +#MSG_ADJUSTZ c=0 r=0 +"Auto adjust Z?" +"Autodostroic Z?" + +#MSG_AUTO_HOME c=0 r=0 +"Auto home" +"Auto home" + +#MSG_AUTOLOAD_FILAMENT c=17 r=0 +"AutoLoad filament" +"\x00" + +#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +"Autoloading filament available only when filament sensor is turned on..." +"\x00" + +#MSG_AUTOLOADING_ENABLED c=20 r=4 +"Autoloading filament is active, just press the knob and insert filament..." +"\x00" + +#MSG_SELFTEST_AXIS_LENGTH c=0 r=0 +"Axis length" +"\x00" + +#MSG_SELFTEST_AXIS c=0 r=0 +"Axis" +"\x00" + +#MSG_BABYSTEPPING_X c=0 r=0 +"Babystepping X" +"Babystepping X" + +#MSG_BABYSTEPPING_Y c=0 r=0 +"Babystepping Y" +"Babystepping Y" + +#MSG_SELFTEST_BEDHEATER c=0 r=0 +"Bed / Heater" +"Bed / Heater" + +#MSG_BED_DONE c=0 r=0 +"Bed done" +"Stolik OK." + +#MSG_BED_HEATING c=0 r=0 +"Bed Heating" +"Grzanie stolika.." + +#MSG_BED_CORRECTION_MENU c=0 r=0 +"Bed level correct" +"Korekta podkladki" + +#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 +"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +"Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset." + +#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 +"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +"Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset." + +#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 +"Bed leveling failed. Sensor triggered too high. Waiting for reset." +"Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset." + +#MSG_BED c=0 r=0 +"Bed" +"Stolik" + +#MSG_BEGIN_FILE_LIST c=0 r=0 +"Begin file list" +"Begin file list" + +#MSG_MENU_BELT_STATUS c=15 r=1 +"Belt status" +"\x00" + +#MSG_RECOVER_PRINT c=20 r=2 +"Blackout occurred. Recover print?" +"\x00" + +#MSG_CALIBRATE_E c=20 r=1 +"Calibrate E" +"Kalibruj E" + +#MSG_CALIBRATE_BED c=0 r=0 +"Calibrate XYZ" +"Kalibracja XYZ" + +#MSG_HOMEYZ c=0 r=0 +"Calibrate Z" +"Kalibruj Z" + +#MSG_CALIBRATE_PINDA c=17 r=1 +"Calibrate" +"Skalibrowac" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic." + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Kalibruje Z" + +#MSG_HOMEYZ_PROGRESS c=0 r=0 +"Calibrating Z" +"Kalibruje Z" + +#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +"Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic." + +#MSG_HOMEYZ_DONE c=0 r=0 +"Calibration done" +"Kalibracja OK" + +#MSG_MENU_CALIBRATION c=0 r=0 +"Calibration" +"Kalibracja" + +#MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 +"Cannot enter subdir: " +"Cannot enter subdir: " + +#MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 +"Cannot open subdir" +"Cannot open subdir" + +#MSG_SD_INSERTED c=0 r=0 +"Card inserted" +"Karta wlozona" + +#MSG_SD_REMOVED c=0 r=0 +"Card removed" +"Karta wyjeta" + +#MSG_NOT_COLOR c=0 r=0 +"Color not correct" +"Kolor zanieczysz." + +#MSG_COOLDOWN c=0 r=0 +"Cooldown" +"Wychlodzic" + +#MSG_CRASHDETECT_ON c=0 r=0 +"Crash det. [on]" +"\x00" + +#MSG_CRASHDETECT_NA c=0 r=0 +"Crash det. [N/A]" +"\x00" + +#MSG_CRASHDETECT_OFF c=0 r=0 +"Crash det. [off]" +"\x00" + +#MSG_CRASH_DETECTED c=20 r=1 +"Crash detected." +"\x00" + +#MSG_CURRENT c=19 r=1 +"Current" +"Tylko aktualne" + +#MSG_DATE c=17 r=1 +"Date:" +"Data:" + +#MSG_DISABLE_STEPPERS c=0 r=0 +"Disable steppers" +"Wylaczyc silniki" + +#MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +"Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy." + +#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +"Do you want to repeat last step to readjust distance between nozzle and heatbed?" +"Chcesz powtorzyc ostatni krok i przestawic odleglosc miedzy dysza a stolikiem?" + +#MSG_CLEAN_NOZZLE_E c=20 r=8 +"E calibration finished. Please clean the nozzle. Click when done." +"Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. " + +#MSG_EXTRUDER_CORRECTION c=9 r=0 +"E-correct" +"\x00" + +#MSG_END_FILE_LIST c=0 r=0 +"End file list" +"End file list" + +#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 +"Endstop not hit" +"Endstop not hit" + +#MSG_SELFTEST_ENDSTOP c=0 r=0 +"Endstop" +"Endstop" + +#MSG_ENDSTOPS_HIT c=0 r=0 +"endstops hit: " +"endstops hit: " + +#MSG_SELFTEST_ENDSTOPS c=0 r=0 +"Endstops" +"Endstops" + +#MSG_Enqueing c=0 r=0 +"enqueing \x22" +"enqueing \x22" + +#MSG_STACK_ERROR c=20 r=4 +"Error - static memory has been overwritten" +"\x00" + +#MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 +"error writing to file" +"error writing to file" + +#MSG_FSENS_NOT_RESPONDING c=20 r=4 +"ERROR: Filament sensor is not responding, please check connection." +"\x00" + +#MSG_ERROR c=0 r=0 +"ERROR:" +"BLAD:" + +#MSG_EXTRUDER_1 c=17 r=1 +"Extruder 1" +"Ekstruder 1" + +#MSG_EXTRUDER_2 c=17 r=1 +"Extruder 2" +"Ekstruder 2" + +#MSG_EXTRUDER_3 c=17 r=1 +"Extruder 3" +"Ekstruder 3" + +#MSG_EXTRUDER_4 c=17 r=1 +"Extruder 4" +"Ekstruder 4" + +#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0 +"Extruder fan:" +"\x00" + +#MSG_INFO_EXTRUDER c=15 r=1 +"Extruder info" +"\x00" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Extruder" + +#MSG_MOVE_E c=0 r=0 +"Extruder" +"Extruder" + +#MSG_FSENS_AUTOLOAD_ON c=17 r=1 +"F. autoload [on]" +"\x00" + +#MSG_FSENS_AUTOLOAD_NA c=17 r=1 +"F. autoload [N/A]" +"\x00" + +#MSG_FSENS_AUTOLOAD_OFF c=17 r=1 +"F. autoload [off]" +"\x00" + +#MSG_FAN_SPEED c=14 r=0 +"Fan speed" +"Predkosc went." + +#MSG_SELFTEST_FAN c=20 r=0 +"Fan test" +"Test wentylatora" + +#MSG_FANS_CHECK_ON c=17 r=1 +"Fans check [on]" +"\x00" + +#MSG_FANS_CHECK_OFF c=17 r=1 +"Fans check [off]" +"\x00" + +#MSG_FSENSOR_ON c=0 r=0 +"Fil. sensor [on]" +"\x00" + +#MSG_FSENSOR_NA c=0 r=0 +"Fil. sensor [N/A]" +"\x00" + +#MSG_FSENSOR_OFF c=0 r=0 +"Fil. sensor [off]" +"\x00" + +#MSG_FILAMENT_CLEAN c=20 r=2 +"Filament extruding & with correct color?" +"Czy kolor jest czysty?" + +#MSG_NOT_LOADED c=19 r=0 +"Filament not loaded" +"Brak filamentu" + +#MSG_FILAMENT_SENSOR c=20 r=0 +"Filament sensor" +"\x00" + +#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0 +"Filament sensor:" +"\x00" + +#MSG_STATS_FILAMENTUSED c=20 r=0 +"Filament used: " +"Filament : " + +#MSG_FILE_INCOMPLETE c=20 r=2 +"File incomplete. Continue anyway?" +"\x00" + +#MSG_SD_FILE_OPENED c=0 r=0 +"File opened: " +"File opened: " + +#MSG_SD_FILE_SELECTED c=0 r=0 +"File selected" +"File selected" + +#MSG_FINISHING_MOVEMENTS c=20 r=1 +"Finishing movements" +"Konczenie druku" + +#MSG_V2_CALIBRATION c=17 r=1 +"First layer cal." +"Kal. 1. warstwy" + +#MSG_WIZARD_SELFTEST c=20 r=8 +"First, I will run the selftest to check most common assembly problems." +"Najpierw wlacze autotest w celu kontrolli najczestszych problemow z montazem." + +#MSG_FLOW c=0 r=0 +"Flow" +"Przeplyw" + +#MSG_PRUSA3D_FORUM c=0 r=0 +"forum.prusa3d.com" +"forum.prusa3d.cz" + +#MSG_SELFTEST_COOLING_FAN c=20 r=0 +"Front print fan?" +"Przedni went. druku?" + +#MSG_BED_CORRECTION_FRONT c=14 r=1 +"Front side[um]" +"Do przodu [um]" + +#MSG_SELFTEST_FANS c=0 r=0 +"Front/left fans" +"\x00" + +#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 +"Heater/Thermistor" +"Heater/Thermistor" + +#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 +"Heating disabled by safety timer." +"\x00" + +#MSG_HEATING_COMPLETE c=20 r=0 +"Heating done." +"Grzanie OK." + +#MSG_HEATING c=0 r=0 +"Heating" +"Grzanie..." + +#MSG_WIZARD_WELCOME c=20 r=7 +"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +"Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z instalacja?" + +#MSG_PRUSA3D_HOWTO c=0 r=0 +"howto.prusa3d.com" +"howto.prusa3d.cz" + +#MSG_CHANGE_EXTR c=20 r=1 +"Change extruder" +"Zmienic ekstruder" + +#MSG_FILAMENTCHANGE c=0 r=0 +"Change filament" +"Wymienic filament" + +#MSG_CNG_SDCARD c=0 r=0 +"Change SD card" +"Vymenit SD" + +#MSG_CHANGE_SUCCESS c=0 r=0 +"Change success!" +"Wymiana ok!" + +#MSG_CORRECTLY c=20 r=0 +"Changed correctly?" +"Wymiana ok?" + +#MSG_CHANGING_FILAMENT c=20 r=0 +"Changing filament!" +"Wymiana filamentu" + +#MSG_SELFTEST_CHECK_BED c=20 r=0 +"Checking bed " +"Kontrola bed " + +#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 +"Checking endstops" +"Kontrola endstops" + +#MSG_SELFTEST_CHECK_HOTEND c=20 r=0 +"Checking hotend " +"Kontrola hotend " + +#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 +"Checking sensors " +"\x00" + +#MSG_SELFTEST_CHECK_X c=20 r=0 +"Checking X axis " +"Kontrola X axis " + +#MSG_SELFTEST_CHECK_Y c=20 r=0 +"Checking Y axis " +"Kontrola Y axis " + +#MSG_SELFTEST_CHECK_Z c=20 r=0 +"Checking Z axis " +"Kontrola Z axis " + +#MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 +"checksum mismatch, Last Line: " +"checksum mismatch, Last Line: " + +#MSG_CHOOSE_EXTRUDER c=20 r=1 +"Choose extruder:" +"Wybierz ekstruder" + +#MSG_WIZARD_XYZ_CAL c=20 r=8 +"I will run xyz calibration now. It will take approx. 12 mins." +"Wlaczam kalibracje xyz. Zajmie to ok. 12 min." + +#MSG_WIZARD_Z_CAL c=20 r=8 +"I will run z calibration now." +"Wlaczam kalibracje z." + +#MSG_WIZARD_V2_CAL_2 c=20 r=12 +"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +"Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac guzik, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym poradniku w rozdz. Kalibracja" + +#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Improving bed calibration point" +"Poprawiam precyzyjnosc punktu kalibracyjnego" + +#MSG_WATCH c=0 r=0 +"Info screen" +"Informacje" + +#MSG_INIT_SDCARD c=0 r=0 +"Init. SD card" +"Inic. SD" + +#MSG_FILAMENT_LOADING_T0 c=20 r=4 +"Insert filament into extruder 1. Click when done." +"Wloz filament do ekstrudera 1. Potwierdz przyciskiem." + +#MSG_FILAMENT_LOADING_T1 c=20 r=4 +"Insert filament into extruder 2. Click when done." +"Wloz filament do ekstrudera 2. Potwierdz przyciskiem." + +#MSG_FILAMENT_LOADING_T2 c=20 r=4 +"Insert filament into extruder 3. Click when done." +"Wloz filament do ekstrudera 3. Potwierdz przyciskiem." + +#MSG_FILAMENT_LOADING_T3 c=20 r=4 +"Insert filament into extruder 4. Click when done." +"Wloz filament do ekstrudera 4. Potwierdz przyciskiem." + +#MSG_INSERT_FILAMENT c=20 r=0 +"Insert filament" +"Wprowadz filament" + +#MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +"Is filament loaded?" +"Filament jest zaladowany?" + +#MSG_WIZARD_PLA_FILAMENT c=20 r=2 +"Is it PLA filament?" +"Czy to filament PLA?" + +#MSG_PLA_FILAMENT_LOADED c=20 r=2 +"Is PLA filament loaded?" +"Fialment PLA jest zaladowany?" + +#MSG_STEEL_SHEET_CHECK c=20 r=2 +"Is steel sheet on heatbed?" +"\x00" + +#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0 +"Iteration " +"Iteracja " + +#MSG_KILLED c=0 r=0 +"KILLED. " +"KILLED. " + +#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 +"Left hotend fan?" +"Lewy went na dysze?" + +#MSG_BED_CORRECTION_LEFT c=14 r=1 +"Left side [um]" +"W lewo [um]" + +#MSG_LEFT c=12 r=1 +"Left:" +"Lewy:" + +#MSG_BABYSTEP_Z c=0 r=0 +"Live adjust Z" +"Dostrojenie osy Z" + +#MSG_LOAD_ALL c=0 r=0 +"Load all" +"Zalad. wszystkie" + +#MSG_LOAD_FILAMENT_1 c=17 r=0 +"Load filament 1" +"Zaladowac fil. 1" + +#MSG_LOAD_FILAMENT_2 c=17 r=0 +"Load filament 2" +"Zaladowac fil. 2" + +#MSG_LOAD_FILAMENT_3 c=17 r=0 +"Load filament 3" +"Zaladowac fil. 3" + +#MSG_LOAD_FILAMENT_4 c=17 r=0 +"Load filament 4" +"Zaladowac fil. 4" + +#MSG_LOAD_FILAMENT c=17 r=0 +"Load filament" +"Wprowadz filament" + +#MSG_LOADING_COLOR c=0 r=0 +"Loading color" +"Czyszcz. koloru" + +#MSG_LOADING_FILAMENT c=20 r=0 +"Loading filament" +"Wprow. filamentu" + +#MSG_LOOSE_PULLEY c=20 r=1 +"Loose pulley" +"Kolo pasowe" + +#MSG_M104_INVALID_EXTRUDER c=0 r=0 +"M104 Invalid extruder " +"M104 Invalid extruder " + +#MSG_M105_INVALID_EXTRUDER c=0 r=0 +"M105 Invalid extruder " +"M105 Invalid extruder " + +#MSG_M109_INVALID_EXTRUDER c=0 r=0 +"M109 Invalid extruder " +"M109 Invalid extruder " + +#MSG_M117_V2_CALIBRATION c=25 r=1 +"M117 First layer cal." +"M117 Kal. 1. warstwy" + +#MSG_M200_INVALID_EXTRUDER c=0 r=0 +"M200 Invalid extruder " +"M200 Invalid extruder " + +#MSG_M218_INVALID_EXTRUDER c=0 r=0 +"M218 Invalid extruder " +"M218 Invalid extruder " + +#MSG_M221_INVALID_EXTRUDER c=0 r=0 +"M221 Invalid extruder " +"M221 Invalid extruder " + +#MSG_MAIN c=0 r=0 +"Main" +"Menu glowne" + +#MSG_MARK_FIL c=20 r=8 +"Mark filament 100mm from extruder body. Click when done." +"Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem." + +#MSG_MEASURED_SKEW c=15 r=1 +"Measured skew:" +"Zmier. sciecie:" + +#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 +"Measuring reference height of calibration point" +"Okreslam wysokosc odniesienia punktu kalibracyjnego" + +#MSG_MESH_BED_LEVELING c=0 r=0 +"Mesh Bed Leveling" +"Mesh Bed Leveling" + +#MSG_STEALTH_MODE_OFF c=0 r=0 +"Mode [Normal]" +"\x00" + +#MSG_SILENT_MODE_ON c=0 r=0 +"Mode [silent]" +"Tryb [cichy]" + +#MSG_STEALTH_MODE_ON c=0 r=0 +"Mode [Stealth]" +"\x00" + +#MSG_AUTO_MODE_ON c=0 r=0 +"Mode [auto power]" +"\x00" + +#MSG_SILENT_MODE_OFF c=0 r=0 +"Mode [high power]" +"Tryb[w wydajnosc]" + +#MSG_SELFTEST_MOTOR c=0 r=0 +"Motor" +"Silnik" + +#MSG_MOVE_AXIS c=0 r=0 +"Move axis" +"Ruch osi" + +#MSG_MOVE_X c=0 r=0 +"Move X" +"Przesunac X" + +#MSG_MOVE_Y c=0 r=0 +"Move Y" +"Przesunac Y" + +#MSG_MOVE_Z c=0 r=0 +"Move Z" +"Przesunac Z" + +#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 +"New firmware version available:" +"Wyszla nowa wersja firmware:" + +#MSG_ERR_NO_CHECKSUM c=0 r=0 +"No Checksum with line number, Last Line: " +"No Checksum with line number, Last Line: " + +#MSG_NO_MOVE c=0 r=0 +"No move." +"No move." + +#MSG_NO_CARD c=0 r=0 +"No SD card" +"Brak karty SD" + +#MSG_ERR_NO_THERMISTORS c=0 r=0 +"No thermistors - no temperature" +"No thermistors - no temperature" + +#MSG_NO c=0 r=0 +"No" +"Nie" + +#MSG_SELFTEST_NOTCONNECTED c=0 r=0 +"Not connected" +"Nie podlaczono " + +#MSG_SELFTEST_FAN_NO c=19 r=0 +"Not spinning" +"Nie kreci sie" + +#MSG_WIZARD_V2_CAL c=20 r=8 +"Now I will calibrate distance between tip of the nozzle and heatbed surface." +"Kalibruje odleglosc miedzy koncowka dyszy a stolikiem." + +#MSG_WIZARD_WILL_PREHEAT c=20 r=4 +"Now I will preheat nozzle for PLA." +"Nagrzewam dysze dla PLA." + +#MSG_INFO_NOZZLE_FAN c=11 r=1 +"Nozzle FAN:" +"\x00" + +#MSG_NOZZLE c=0 r=0 +"Nozzle" +"Dysza" + +#MSG_NOZZLE1 c=0 r=0 +"Nozzle2" +"Tryska2" + +#MSG_NOZZLE2 c=0 r=0 +"Nozzle3" +"Tryska3" + +#MSG_OK c=0 r=0 +"ok" +"ok" + +#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 +"Old settings found. Default PID, Esteps etc. will be set." +"\x00" + +#MSG_SD_OPEN_FILE_FAIL c=0 r=0 +"open failed, File: " +"open failed, File: " + +#MSG_ENDSTOP_OPEN c=0 r=0 +"open" +"open" + +#MSG_SD_OPENROOT_FAIL c=0 r=0 +"openRoot failed" +"openRoot failed" + +#MSG_PAUSE_PRINT c=0 r=0 +"Pause print" +"Przerwac druk" + +#MSG_PICK_Z c=0 r=0 +"Pick print" +"Vyberte vytisk" + +#MSG_PID_RUNNING c=20 r=1 +"PID cal. " +"Kal. PID" + +#MSG_PID_FINISHED c=20 r=1 +"PID cal. finished" +"Kal. PID zakonczona" + +#MSG_PID_EXTRUDER c=17 r=1 +"PID calibration" +"Kalibracja PID" + +#MSG_PINDA_PREHEAT c=20 r=1 +"PINDA Heating" +"Grzanie PINDA" + +#MSG_PAPER c=20 r=8 +"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +"Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke." + +#MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +"Please clean heatbed and then press the knob." +"Prosze oczysc stolik i nacisnij guzik." + +#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +"Please clean the nozzle for calibration. Click when done." +"Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem." + +#MSG_SELFTEST_PLEASECHECK c=0 r=0 +"Please check :" +"Skontroluj :" + +#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +"Prosze sprawdz nasz poradnik i napraw problem. Potem przywroc Wizard restartujac drukarke." + +#MSG_WIZARD_LOAD_FILAMENT c=20 r=8 +"Please insert PLA filament to the extruder, then press knob to load it." +"Prosze umiesc filament PLA w ekstruderze i nacisnij przycisk by zaladowac." + +#MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8 +"Please load PLA filament and then resume Wizard by rebooting the printer." +"Prosze zaladuj filament PLA i przywroc Wizard przez restart drukarki." + +#MSG_PLEASE_LOAD_PLA c=20 r=4 +"Please load PLA filament first." +"Prosze, najpierw zaladuj filament PLA." + +#MSG_CHECK_IDLER c=20 r=4 +"Please open idler and remove filament manually." +"\x00" + +#MSG_PLACE_STEEL_SHEET c=20 r=4 +"Please place steel sheet on heatbed." +"\x00" + +#MSG_PRESS_TO_UNLOAD c=20 r=4 +"Please press the knob to unload filament" +"\x00" + +#MSG_PULL_OUT_FILAMENT c=20 r=4 +"Please pull out filament immediately" +"\x00" + +#MSG_REMOVE_STEEL_SHEET c=20 r=4 +"Please remove steel sheet from heatbed." +"\x00" + +#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 +"Please upgrade." +"Prosze zaktualizowac" + +#MSG_PLEASE_WAIT c=20 r=0 +"Please wait" +"Prosze czekac" + +#MSG_POWERUP c=0 r=0 +"PowerUp" +"PowerUp" + +#MSG_PREHEAT_NOZZLE c=20 r=0 +"Preheat the nozzle!" +"Nagrzej dysze!" + +#MSG_PREHEAT c=0 r=0 +"Preheat" +"Grzanie" + +#MSG_WIZARD_HEATING c=20 r=3 +"Preheating nozzle. Please wait." +"Nagrzewanie dyszy. Prosze czekac." + +#MSG_PREPARE_FILAMENT c=20 r=1 +"Prepare new filament" +"Przygotuj filament" + +#MSG_PRESS_TO_PREHEAT c=20 r=4 +"Press knob to preheat nozzle and continue." +"\x00" + +#MSG_PRINT_ABORTED c=20 r=0 +"Print aborted" +"Druk przerwany" + +#MSG_INFO_PRINT_FAN c=11 r=1 +"Print FAN: " +"\x00" + +#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0 +"Print fan:" +"\x00" + +#MSG_CARD_MENU c=0 r=0 +"Print from SD" +"Druk z SD" + +#MSG_PRINT_PAUSED c=20 r=1 +"Print paused" +"Druk zatrzymany" + +#MSG_STATS_PRINTTIME c=20 r=0 +"Print time: " +"Czas druku : " + +#MSG_PRINTER_DISCONNECTED c=20 r=1 +"Printer disconnected" +"\x00" + +#MSG_ERR_KILLED c=0 r=0 +"Printer halted. kill() called!" +"Printer halted. kill() called!" + +#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +"Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest." + +#MSG_ERR_STOPPED c=0 r=0 +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" + +#WELCOME_MSG c=20 r=0 +"Prusa i3 MK3 ready." +"Prusa i3 MK3 gotowa" + +#MSG_PRUSA3D c=0 r=0 +"prusa3d.com" +"prusa3d.cz" + +#MSG_BED_CORRECTION_REAR c=14 r=1 +"Rear side [um]" +"Do tylu [um]" + +#MSG_RECOVERING_PRINT c=20 r=1 +"Recovering print " +"\x00" + +#MSG_M119_REPORT c=0 r=0 +"Reporting endstop status" +"Reporting endstop status" + +#MSG_RESEND c=0 r=0 +"Resend: " +"Resend: " + +#MSG_CALIBRATE_BED_RESET c=0 r=0 +"Reset XYZ calibr." +"Reset kalibr. XYZ" + +#MSG_BED_CORRECTION_RESET c=0 r=0 +"Reset" +"Reset" + +#MSG_RESUME_PRINT c=0 r=0 +"Resume print" +"Kontynuowac" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Wznowienie druku" + +#MSG_RESUMING c=0 r=0 +"Resuming print" +"Wznowienie druku" + +#MSG_BED_CORRECTION_RIGHT c=14 r=1 +"Right side[um]" +"W prawo [um]" + +#MSG_RIGHT c=12 r=1 +"Right:" +"Prawy:" + +#MSG_E_CAL_KNOB c=20 r=8 +"Rotate knob until mark reaches extruder body. Click when done." +"Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem." + +#MSG_SECOND_SERIAL_ON c=17 r=1 +"RPi port [on]" +"\x00" + +#MSG_SECOND_SERIAL_OFF c=17 r=1 +"RPi port [off]" +"\x00" + +#MSG_WIZARD_RERUN c=20 r=7 +"Running Wizard will delete current calibration results and start from the beginning. Continue?" +"Wlaczenie Wizard usunie obecne dane kalibracyjne i zacznie od nowa. Kontynuowac?" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 +"SD card [normal]" +"karta SD [normal]" + +#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 +"SD card [FlshAir]" +"karta SD[FlshAir]" + +#MSG_SD_CARD_OK c=0 r=0 +"SD card ok" +"SD card ok" + +#MSG_SD_INIT_FAIL c=0 r=0 +"SD init fail" +"SD init fail" + +#MSG_SD_PRINTING_BYTE c=0 r=0 +"SD printing byte " +"SD printing byte " + +#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 +"Searching bed calibration point" +"Szukam punktu kalibracyjnego podkladki" + +#MSG_LANGUAGE_SELECT c=0 r=0 +"Select language" +"Wybor jezyka" + +#MSG_SELFTEST_OK c=0 r=0 +"Self test OK" +"Self test OK" + +#MSG_SELFTEST_START c=20 r=0 +"Self test start " +"Self test start " + +#MSG_SELFTEST c=0 r=0 +"Selftest " +"Selftest " + +#MSG_SELFTEST_ERROR c=0 r=0 +"Selftest error !" +"Selftest error !" + +#MSG_SELFTEST_FAILED c=20 r=0 +"Selftest failed " +"Selftest nieudany" + +#MSG_FORCE_SELFTEST c=20 r=8 +"Selftest will be run to calibrate accurate sensorless rehoming." +"\x00" + +#MSG_SET_TEMPERATURE c=19 r=1 +"Set temperature:" +"Ustawic temperature" + +#MSG_SETTINGS c=0 r=0 +"Settings" +"Ustawienia" + +#MSG_SEVERE_SKEW c=15 r=1 +"Severe skew:" +"Ostre sciecie:" + +#MSG_SHOW_END_STOPS c=17 r=1 +"Show end stops" +"Pokaz krancowki" + +#MSG_DWELL c=0 r=0 +"Sleep..." +"Sleep..." + +#MSG_SLIGHT_SKEW c=15 r=1 +"Slight skew:" +"Lekkie sciecie:" + +#MSG_FILE_CNT c=20 r=4 +"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +"\x00" + +#MSG_SORT_NONE c=17 r=1 +"Sort: [None]" +"\x00" + +#MSG_SORT_TIME c=17 r=1 +"Sort: [Time]" +"\x00" + +#MSG_SORT_ALPHA c=17 r=1 +"Sort: [Alphabet]" +"\x00" + +#MSG_SORTING c=20 r=1 +"Sorting files" +"\x00" + +#MSG_SPEED c=0 r=0 +"Speed" +"Predkosc" + +#MSG_SELFTEST_FAN_YES c=19 r=0 +"Spinning" +"Kreci sie" + +#MSG_TEMP_CAL_WARNING c=20 r=4 +"Stable ambient temperature 21-26C is needed a rigid stand is required." +"\x00" + +#MSG_STATISTICS c=0 r=0 +"Statistics " +"Statystyka " + +#MSG_STEPPER_TOO_HIGH c=0 r=0 +"Steprate too high: " +"Steprate too high: " + +#MSG_STOP_PRINT c=0 r=0 +"Stop print" +"Zatrzymac druk" + +#MSG_STOPPED c=0 r=0 +"STOPPED. " +"STOPPED. " + +#MSG_SUPPORT c=0 r=0 +"Support" +"Pomoc" + +#MSG_SELFTEST_SWAPPED c=0 r=0 +"Swapped" +"\x00" + +#MSG_TEMP_CALIBRATION c=20 r=1 +"Temp. cal. " +"Ciepl. kal. " + +#MSG_TEMP_CALIBRATION_ON c=20 r=1 +"Temp. cal. [on]" +"Ciepl. kal. [ON]" + +#MSG_TEMP_CALIBRATION_OFF c=20 r=1 +"Temp. cal. [off]" +"Ciepl. kal. [OFF]" + +#MSG_CALIBRATION_PINDA_MENU c=17 r=1 +"Temp. calibration" +"Cieplna kalibr." + +#MSG_TEMP_CAL_FAILED c=20 r=8 +"Temperature calibration failed" +"\x00" + +#MSG_PINDA_NOT_CALIBRATED c=20 r=4 +"Temperature calibration has not been run yet" +"Cieplna kalibracja nie byla przeprowadzona" + +#MSG_TEMP_CALIBRATION_DONE c=20 r=12 +"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +"Cieplna kalibracja zakonczona. Kontynuuj przyciskiem" + +#MSG_TEMPERATURE c=0 r=0 +"Temperature" +"Temperatura" + +#MSG_MENU_TEMPERATURES c=15 r=1 +"Temperatures" +"\x00" + +#MSG_STATS_TOTALFILAMENT c=20 r=0 +"Total filament :" +"Filament lacznie :" + +#MSG_STATS_TOTALPRINTTIME c=20 r=0 +"Total print time :" +"Czas calkowity :" + +#MSG_ENDSTOP_HIT c=0 r=0 +"TRIGGERED" +"TRIGGERED" + +#MSG_TUNE c=0 r=0 +"Tune" +"Nastroic" + +#MSG_UNLOAD_ALL c=0 r=0 +"Unload all" +"Wyjac wszystkie" + +#MSG_UNLOAD_FILAMENT_1 c=17 r=0 +"Unload filament 1" +"Wyjac filament 1" + +#MSG_UNLOAD_FILAMENT_2 c=17 r=0 +"Unload filament 2" +"Wyjac filament 2" + +#MSG_UNLOAD_FILAMENT_3 c=17 r=0 +"Unload filament 3" +"Wyjac filament 3" + +#MSG_UNLOAD_FILAMENT_4 c=17 r=0 +"Unload filament 4" +"Wyjac filament 4" + +#MSG_UNLOAD_FILAMENT c=17 r=0 +"Unload filament" +"Wyjac filament" + +#MSG_UNLOADING_FILAMENT c=20 r=1 +"Unloading filament" +"Wysuwam filament" + +#MSG_USED c=19 r=1 +"Used during print" +"Uzyte przy druku" + +#MSG_MENU_VOLTAGES c=15 r=1 +"Voltages" +"\x00" + +#MSG_SD_VOL_INIT_FAIL c=0 r=0 +"volume.init failed" +"volume.init failed" + +#MSG_USERWAIT c=0 r=0 +"Wait for user..." +"Wait for user..." + +#MSG_WAITING_TEMP c=20 r=3 +"Waiting for nozzle and bed cooling" +"Oczekiwanie na wychlodzenie dyszy i podkladki." + +#MSG_WAITING_TEMP_PINDA c=20 r=3 +"Waiting for PINDA probe cooling" +"\x00" + +#MSG_CHANGED_BOTH c=20 r=4 +"Warning: both printer type and motherboard type changed." +"\x00" + +#MSG_CHANGED_MOTHERBOARD c=20 r=4 +"Warning: motherboard type changed." +"\x00" + +#MSG_CHANGED_PRINTER c=20 r=4 +"Warning: printer type changed." +"\x00" + +#MSG_FW_VERSION_UNKNOWN c=20 r=8 +"WARNING: This is an unofficial, unsupported build. Use at your own risk!" +"\x00" + +#MSG_UNLOAD_SUCCESSFUL c=20 r=2 +"Was filament unload successful?" +"\x00" + +#MSG_SELFTEST_WIRINGERROR c=0 r=0 +"Wiring error" +"Blad polaczenia" + +#MSG_WIZARD c=17 r=1 +"Wizard" +"Wizard" + +#MSG_SD_WORKDIR_FAIL c=0 r=0 +"workDir open failed" +"workDir open failed" + +#MSG_SD_WRITE_TO_FILE c=0 r=0 +"Writing to file: " +"Writing to file: " + +#MSG_XYZ_DETAILS c=19 r=1 +"XYZ cal. details" +"Szczegoly kal.XYZ" + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +"XYZ calibration all right. Skew will be corrected automatically." +"Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku." + +#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +"XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +"Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!" + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration compromised. Front calibration points not reachable." +"Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration compromised. Left front calibration point not reachable." +"Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu." + +#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration compromised. Right front calibration point not reachable." +"Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu." + +#MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 +"XYZ calibration failed. Bed calibration point was not found." +"Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 +"XYZ calibration failed. Front calibration points not reachable." +"Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 +"XYZ calibration failed. Left front calibration point not reachable." +"Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke." + +#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +"XYZ calibration failed. Please consult the manual." +"Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji." + +#MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 +"XYZ calibration failed. Right front calibration point not reachable." +"Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke." + +#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +"Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!" + +#MSG_Y_DISTANCE_FROM_MIN c=20 r=1 +"Y distance from min:" +"Odleglosc Y od min.:" + +#MSG_YES c=0 r=0 +"Yes" +"Tak" + +#MSG_FW_VERSION_ALPHA c=20 r=8 +"You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_FW_VERSION_BETA c=20 r=8 +"You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +"\x00" + +#MSG_WIZARD_QUIT c=20 r=8 +"You can always resume the Wizard from Calibration -> Wizard." +"Zawsze mozesz przywrocic Wizard przez Kalibracja -> Wizard." + diff --git a/lang_upgrade/make_lang_en_de.sh b/lang_upgrade/make_lang_en_de.sh new file mode 100644 index 00000000..69a0a3e2 --- /dev/null +++ b/lang_upgrade/make_lang_en_de.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# make_lang_en_de.sh - create en_de dictionary from msgs +echo "make_lang_en_de.sh" +echo "please wait..." + +cat msgs_en_used_once.txt msgs_en_used_more.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_en_.txt + +cat msgs_de.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_de_.txt + +cat lang_en.txt | sed "/^$/d;/^#/d" | sed "s/\\\/\\\\\\\/g" |\ + while read text; do + msg='' + msg=$(grep -a -m 1 -h -w -F "$text" msgs_en_.txt) + if [ -z "$msg" ]; then + echo "#???" + echo "$text" + echo '"\x00"' + echo + else + name=$(echo $msg | cut -f1 -d' ') + cols=$(echo $msg | cut -f2 -d' ') + rows=$(echo $msg | cut -f3 -d' ') + echo "#$name $cols $rows" + echo "$text" + msg_de=$(grep -a -m 1 -h "^$name " msgs_de_.txt) + if [ -z "$msg_de" ]; then + echo '"\x00"' + echo + else + text_de=$(echo $msg_de | cut -f2- -d' ') + echo "$text_de" + echo + fi + fi +done > lang_en_de.txt + +rm msgs_en_.txt +rm msgs_de_.txt + +echo "finished... press any key" +read +exit + +#not found in msgs_de: +# MSG_EXTRUDER_CORRECTION_OFF " [off" +# MSG_MEASURED_OFFSET "[0;0] point offset" +# MSG_EXTRUDER_CORRECTION "E-correct" +# MSG_PRUSA3D_FORUM "forum.prusa3d.com" +# MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +# MSG_PRINTER_DISCONNECTED "Printer disconnected" +# MSG_PRUSA3D "prusa3d.com" +# MSG_TEMP_CAL_WARNING "Stable ambient temperature 21-26C is needed a rigid stand is required." diff --git a/lang_upgrade/make_lang_en_es.sh b/lang_upgrade/make_lang_en_es.sh new file mode 100644 index 00000000..2b7f26fb --- /dev/null +++ b/lang_upgrade/make_lang_en_es.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# make_lang_en_es.sh - create en_es dictionary from msgs +echo "make_lang_en_es.sh" +echo "please wait..." + +cat msgs_en_used_once.txt msgs_en_used_more.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_en_.txt + +cat msgs_es.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_es_.txt + +cat lang_en.txt | sed "/^$/d;/^#/d" | sed "s/\\\/\\\\\\\/g" |\ + while read text; do + msg='' + msg=$(grep -a -m 1 -h -w -F "$text" msgs_en_.txt) + if [ -z "$msg" ]; then + echo "#???" + echo "$text" + echo '"\x00"' + echo + else + name=$(echo $msg | cut -f1 -d' ') + cols=$(echo $msg | cut -f2 -d' ') + rows=$(echo $msg | cut -f3 -d' ') + echo "#$name $cols $rows" + echo "$text" + msg_es=$(grep -a -m 1 -h "^$name " msgs_es_.txt) + if [ -z "$msg_es" ]; then + echo '"\x00"' + echo + else + text_es=$(echo $msg_es | cut -f2- -d' ') + echo "$text_es" + echo + fi + fi +done > lang_en_es.txt + +rm msgs_en_.txt +rm msgs_es_.txt + +echo "finished... press any key" +read +exit + +#not found in msgs_es: +# MSG_EXTRUDER_CORRECTION_OFF " [off" +# MSG_MEASURED_OFFSET "[0;0] point offset" +# MSG_EXTRUDER_CORRECTION "E-correct" +# MSG_PRUSA3D_FORUM "forum.prusa3d.com" +# MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +# MSG_PRINTER_DISCONNECTED "Printer disconnected" +# MSG_PRUSA3D "prusa3d.com" +# MSG_TEMP_CAL_WARNING "Stable ambient temperature 21-26C is needed a rigid stand is required." diff --git a/lang_upgrade/make_lang_en_it.sh b/lang_upgrade/make_lang_en_it.sh new file mode 100644 index 00000000..ff5a5c24 --- /dev/null +++ b/lang_upgrade/make_lang_en_it.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# make_lang_en_it.sh - create en_it dictionary from msgs +echo "make_lang_en_it.sh" +echo "please wait..." + +cat msgs_en_used_once.txt msgs_en_used_more.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_en_.txt + +cat msgs_it.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_it_.txt + +cat lang_en.txt | sed "/^$/d;/^#/d" | sed "s/\\\/\\\\\\\/g" |\ + while read text; do + msg='' + msg=$(grep -a -m 1 -h -w -F "$text" msgs_en_.txt) + if [ -z "$msg" ]; then + echo "#???" + echo "$text" + echo '"\x00"' + echo + else + name=$(echo $msg | cut -f1 -d' ') + cols=$(echo $msg | cut -f2 -d' ') + rows=$(echo $msg | cut -f3 -d' ') + echo "#$name $cols $rows" + echo "$text" + msg_it=$(grep -a -m 1 -h "^$name " msgs_it_.txt) + if [ -z "$msg_it" ]; then + echo '"\x00"' + echo + else + text_it=$(echo $msg_it | cut -f2- -d' ') + echo "$text_it" + echo + fi + fi +done > lang_en_it.txt + +rm msgs_en_.txt +rm msgs_it_.txt + +echo "finished... press any key" +read +exit + +#not found in msgs_it: +# MSG_EXTRUDER_CORRECTION_OFF " [off" +# MSG_MEASURED_OFFSET "[0;0] point offset" +# MSG_EXTRUDER_CORRECTION "E-correct" +# MSG_PRUSA3D_FORUM "forum.prusa3d.com" +# MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +# MSG_PRINTER_DISCONNECTED "Printer disconnected" +# MSG_PRUSA3D "prusa3d.com" +# MSG_TEMP_CAL_WARNING "Stable ambient temperature 21-26C is needed a rigid stand is required." diff --git a/lang_upgrade/make_lang_en_pl.sh b/lang_upgrade/make_lang_en_pl.sh new file mode 100644 index 00000000..4b402e0d --- /dev/null +++ b/lang_upgrade/make_lang_en_pl.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# make_lang_en_pl.sh - create en_pl dictionary from msgs +echo "make_lang_en_pl.sh" +echo "please wait..." + +cat msgs_en_used_once.txt msgs_en_used_more.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_en_.txt + +cat msgs_pl.txt |\ + sed "s/\bCUSTOM_MENDEL_NAME\b/\"Prusa i3 MK3\"/g" |\ + sed "s/\" \"//g" |\ + sed 's/\\"/\\x22/g' |\ + sed 's/\\xF8/\\xf8/g' > msgs_pl_.txt + +cat lang_en.txt | sed "/^$/d;/^#/d" | sed "s/\\\/\\\\\\\/g" |\ + while read text; do + msg='' + msg=$(grep -a -m 1 -h -w -F "$text" msgs_en_.txt) + if [ -z "$msg" ]; then + echo "#???" + echo "$text" + echo '"\x00"' + echo + else + name=$(echo $msg | cut -f1 -d' ') + cols=$(echo $msg | cut -f2 -d' ') + rows=$(echo $msg | cut -f3 -d' ') + echo "#$name $cols $rows" + echo "$text" + msg_pl=$(grep -a -m 1 -h "^$name " msgs_pl_.txt) + if [ -z "$msg_pl" ]; then + echo '"\x00"' + echo + else + text_pl=$(echo $msg_pl | cut -f2- -d' ') + echo "$text_pl" + echo + fi + fi +done > lang_en_pl.txt + +rm msgs_en_.txt +rm msgs_pl_.txt + +echo "finished... press any key" +read +exit + +#not found in msgs_pl: +# MSG_EXTRUDER_CORRECTION_OFF " [off" +# MSG_MEASURED_OFFSET "[0;0] point offset" +# MSG_EXTRUDER_CORRECTION "E-correct" +# MSG_PRUSA3D_FORUM "forum.prusa3d.com" +# MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +# MSG_PRINTER_DISCONNECTED "Printer disconnected" +# MSG_PRUSA3D "prusa3d.com" +# MSG_TEMP_CAL_WARNING "Stable ambient temperature 21-26C is needed a rigid stand is required." From 15207e4d5e6be388355d9d14be5e408bb4bdb037 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 28 May 2018 01:47:08 +0200 Subject: [PATCH 46/68] Linearity correction fix - (eeprom storage changed to byte instead of word) +enabled for XYZ axes --- Firmware/Marlin_main.cpp | 12 ++++---- Firmware/tmc2130.cpp | 8 +++-- Firmware/ultralcd.cpp | 29 +++++++++++++------ .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 1 + 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 13d5b82b..0a959348 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1079,12 +1079,12 @@ void setup() } #ifdef TMC2130_LINEARITY_CORRECTION -#ifdef EXPERIMENTAL_FEATURES - tmc2130_wave_fac[X_AXIS] = eeprom_read_word((uint8_t*)EEPROM_TMC2130_WAVE_X_FAC); - tmc2130_wave_fac[Y_AXIS] = eeprom_read_word((uint8_t*)EEPROM_TMC2130_WAVE_Y_FAC); - tmc2130_wave_fac[Z_AXIS] = eeprom_read_word((uint8_t*)EEPROM_TMC2130_WAVE_Z_FAC); -#endif //EXPERIMENTAL_FEATURES - tmc2130_wave_fac[E_AXIS] = eeprom_read_word((uint16_t*)EEPROM_TMC2130_WAVE_E_FAC); +#ifdef TMC2130_LINEARITY_CORRECTION_XYZ + tmc2130_wave_fac[X_AXIS] = eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_X_FAC); + tmc2130_wave_fac[Y_AXIS] = eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_Y_FAC); + tmc2130_wave_fac[Z_AXIS] = eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_Z_FAC); +#endif //TMC2130_LINEARITY_CORRECTION_XYZ + tmc2130_wave_fac[E_AXIS] = eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_E_FAC); if (tmc2130_wave_fac[X_AXIS] == 0xff) tmc2130_wave_fac[X_AXIS] = 0; if (tmc2130_wave_fac[Y_AXIS] == 0xff) tmc2130_wave_fac[Y_AXIS] = 0; if (tmc2130_wave_fac[Z_AXIS] == 0xff) tmc2130_wave_fac[Z_AXIS] = 0; diff --git a/Firmware/tmc2130.cpp b/Firmware/tmc2130.cpp index 5f5fe5aa..27558b6a 100644 --- a/Firmware/tmc2130.cpp +++ b/Firmware/tmc2130.cpp @@ -214,9 +214,11 @@ void tmc2130_init() tmc2130_sg_cnt[3] = 0; #ifdef TMC2130_LINEARITY_CORRECTION -// tmc2130_set_wave(X_AXIS, 247, tmc2130_wave_fac[X_AXIS]); -// tmc2130_set_wave(Y_AXIS, 247, tmc2130_wave_fac[Y_AXIS]); -// tmc2130_set_wave(Z_AXIS, 247, tmc2130_wave_fac[Z_AXIS]); +#ifdef TMC2130_LINEARITY_CORRECTION_XYZ + tmc2130_set_wave(X_AXIS, 247, tmc2130_wave_fac[X_AXIS]); + tmc2130_set_wave(Y_AXIS, 247, tmc2130_wave_fac[Y_AXIS]); + tmc2130_set_wave(Z_AXIS, 247, tmc2130_wave_fac[Z_AXIS]); +#endif //TMC2130_LINEARITY_CORRECTION_XYZ tmc2130_set_wave(E_AXIS, 247, tmc2130_wave_fac[E_AXIS]); #endif //TMC2130_LINEARITY_CORRECTION diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f5bd35e1..f7e8359f 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4195,6 +4195,11 @@ static void lcd_settings_menu() } else MENU_ITEM(submenu, _T(MSG_CRASHDETECT_NA), lcd_crash_mode_info); } +#ifdef TMC2130_LINEARITY_CORRECTION_XYZ + MENU_ITEM_EDIT(wfac, _i("X-correct"), &tmc2130_wave_fac[X_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 + MENU_ITEM_EDIT(wfac, _i("Y-correct"), &tmc2130_wave_fac[Y_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 + MENU_ITEM_EDIT(wfac, _i("Z-correct"), &tmc2130_wave_fac[Z_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 +#endif //TMC2130_LINEARITY_CORRECTION_XYZ MENU_ITEM_EDIT(wfac, _i("E-correct"), &tmc2130_wave_fac[E_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 #endif //TMC2130 @@ -4254,10 +4259,10 @@ static void lcd_selftest_() #ifdef TMC2130 static void lcd_ustep_linearity_menu_save() { - eeprom_update_word((uint16_t*)EEPROM_TMC2130_WAVE_X_FAC, tmc2130_wave_fac[X_AXIS]); - eeprom_update_word((uint16_t*)EEPROM_TMC2130_WAVE_Y_FAC, tmc2130_wave_fac[Y_AXIS]); - eeprom_update_word((uint16_t*)EEPROM_TMC2130_WAVE_Z_FAC, tmc2130_wave_fac[Z_AXIS]); - eeprom_update_word((uint16_t*)EEPROM_TMC2130_WAVE_E_FAC, tmc2130_wave_fac[E_AXIS]); + eeprom_update_byte((uint8_t*)EEPROM_TMC2130_WAVE_X_FAC, tmc2130_wave_fac[X_AXIS]); + eeprom_update_byte((uint8_t*)EEPROM_TMC2130_WAVE_Y_FAC, tmc2130_wave_fac[Y_AXIS]); + eeprom_update_byte((uint8_t*)EEPROM_TMC2130_WAVE_Z_FAC, tmc2130_wave_fac[Z_AXIS]); + eeprom_update_byte((uint8_t*)EEPROM_TMC2130_WAVE_E_FAC, tmc2130_wave_fac[E_AXIS]); } #endif //TMC2130 @@ -4265,8 +4270,14 @@ static void lcd_settings_menu_back() { #ifdef TMC2130 bool changed = false; + if (tmc2130_wave_fac[X_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[X_AXIS] = 0; + if (tmc2130_wave_fac[Y_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[Y_AXIS] = 0; + if (tmc2130_wave_fac[Z_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[Z_AXIS] = 0; if (tmc2130_wave_fac[E_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[E_AXIS] = 0; - changed |= (eeprom_read_word((uint16_t*)EEPROM_TMC2130_WAVE_E_FAC) != tmc2130_wave_fac[E_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_X_FAC) != tmc2130_wave_fac[X_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_Y_FAC) != tmc2130_wave_fac[Y_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_Z_FAC) != tmc2130_wave_fac[Z_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_E_FAC) != tmc2130_wave_fac[E_AXIS]); lcd_ustep_linearity_menu_save(); if (changed) tmc2130_init(); #endif //TMC2130 @@ -4412,10 +4423,10 @@ static void lcd_ustep_linearity_menu_back() if (tmc2130_wave_fac[Y_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[Y_AXIS] = 0; if (tmc2130_wave_fac[Z_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[Z_AXIS] = 0; if (tmc2130_wave_fac[E_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[E_AXIS] = 0; - changed |= (eeprom_read_word((uint16_t*)EEPROM_TMC2130_WAVE_X_FAC) != tmc2130_wave_fac[X_AXIS]); - changed |= (eeprom_read_word((uint16_t*)EEPROM_TMC2130_WAVE_Y_FAC) != tmc2130_wave_fac[Y_AXIS]); - changed |= (eeprom_read_word((uint16_t*)EEPROM_TMC2130_WAVE_Z_FAC) != tmc2130_wave_fac[Z_AXIS]); - changed |= (eeprom_read_word((uint16_t*)EEPROM_TMC2130_WAVE_E_FAC) != tmc2130_wave_fac[E_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_X_FAC) != tmc2130_wave_fac[X_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_Y_FAC) != tmc2130_wave_fac[Y_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_Z_FAC) != tmc2130_wave_fac[Z_AXIS]); + changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_E_FAC) != tmc2130_wave_fac[E_AXIS]); lcd_ustep_linearity_menu_save(); if (changed) tmc2130_init(); currentMenu = lcd_experimantal_menu; diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index b82ae92f..0f0356ed 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -181,6 +181,7 @@ //#define EXPERIMENTAL_FEATURES #define TMC2130_LINEARITY_CORRECTION +#define TMC2130_LINEARITY_CORRECTION_XYZ //#define TMC2130_VARIABLE_RESOLUTION From 3bf2552b6cda0efcbbda8ea5db063bc5d1e0793c Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 28 May 2018 13:41:36 +0200 Subject: [PATCH 47/68] fixed #761 from hzapper (#elif instead of #else if) --- Firmware/sm4.c | 8 ++++---- Firmware/ultralcd.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Firmware/sm4.c b/Firmware/sm4.c index 15c92846..f50591c3 100644 --- a/Firmware/sm4.c +++ b/Firmware/sm4.c @@ -53,7 +53,7 @@ uint8_t sm4_get_dir(uint8_t axis) case 1: return (PORTL & 1)?0:1; case 2: return (PORTL & 4)?0:1; case 3: return (PORTL & 64)?1:0; -#else if ((MOTHERBOARD == BOARD_EINSY_1_0a)) +#elif ((MOTHERBOARD == BOARD_EINSY_1_0a)) case 0: return (PORTL & 1)?1:0; case 1: return (PORTL & 2)?0:1; case 2: return (PORTL & 4)?1:0; @@ -72,7 +72,7 @@ void sm4_set_dir(uint8_t axis, uint8_t dir) case 1: if (!dir) PORTL |= 1; else PORTL &= ~1; break; case 2: if (!dir) PORTL |= 4; else PORTL &= ~4; break; case 3: if (dir) PORTL |= 64; else PORTL &= ~64; break; -#else if ((MOTHERBOARD == BOARD_EINSY_1_0a)) +#elif ((MOTHERBOARD == BOARD_EINSY_1_0a)) case 0: if (dir) PORTL |= 1; else PORTL &= ~1; break; case 1: if (!dir) PORTL |= 2; else PORTL &= ~2; break; case 2: if (dir) PORTL |= 4; else PORTL &= ~4; break; @@ -93,7 +93,7 @@ uint8_t sm4_get_dir_bits(void) if (portL & 4) dir_bits |= 4; if (portL & 64) dir_bits |= 8; dir_bits ^= 0x07; //invert XYZ, do not invert E -#else if ((MOTHERBOARD == BOARD_EINSY_1_0a)) +#elif ((MOTHERBOARD == BOARD_EINSY_1_0a)) if (portL & 1) dir_bits |= 1; if (portL & 2) dir_bits |= 2; if (portL & 4) dir_bits |= 4; @@ -114,7 +114,7 @@ void sm4_set_dir_bits(uint8_t dir_bits) if (dir_bits & 2) portL |= 1; //set Y direction bit if (dir_bits & 4) portL |= 4; //set Z direction bit if (dir_bits & 8) portL |= 64; //set E direction bit -#else if ((MOTHERBOARD == BOARD_EINSY_1_0a)) +#elif ((MOTHERBOARD == BOARD_EINSY_1_0a)) dir_bits ^= 0x0a; //invert YE, do not invert XZ if (dir_bits & 1) portL |= 1; //set X direction bit if (dir_bits & 2) portL |= 2; //set Y direction bit diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 596c06b4..ae5ef9c2 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1649,7 +1649,7 @@ static void lcd_menu_fails_stats() MENU_ITEM(submenu, PSTR("Total"), lcd_menu_fails_stats_total); END_MENU(); } -#else if defined(PAT9125) +#elif defined(PAT9125) /** * @brief Print last print and total filament run outs * From 79ec2ad88626254381b2900c5216a6849be5639c Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 28 May 2018 15:36:49 +0200 Subject: [PATCH 48/68] New ML support - postbuild.sh posibility to continue in case of missing texts (IGNORE_MISSING_TEXT) --- lang/postbuild.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lang/postbuild.sh b/lang/postbuild.sh index b24bc67d..4c26f5cd 100644 --- a/lang/postbuild.sh +++ b/lang/postbuild.sh @@ -26,7 +26,9 @@ OBJCOPY=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy.exe # Selected language: LANG=$1 #if [ -z "$LANG" ]; then LANG='cz'; fi - +# +# Params: +IGNORE_MISSING_TEXT=0 function finish { @@ -67,8 +69,16 @@ echo "OK" >&2 #check for messages declared in progmem1, but not found in lang_en.txt echo -n " checking textaddr.txt..." >&2 -if cat textaddr.txt | grep "^ADDR NF"; then echo "NG! - some strings not found in lang_en.txt!"; finish 1; fi -echo "OK" >&2 +if cat textaddr.txt | grep "^ADDR NF" >/dev/null; then + echo "NG! - some texts not found in lang_en.txt!" + if [ $(("0$IGNORE_MISSING_TEXT")) -eq 0 ]; then + finish 1 + else + echo " missing text ignored!" >&2 + fi +else + echo "OK" >&2 +fi #update progmem1 id entries in binary file echo -n " extracting binary..." >&2 From 8f87d75637f58f86f282e0fffbf103ee4cbc7a4e Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 28 May 2018 17:13:35 +0200 Subject: [PATCH 49/68] New ML support lang_en.txt, lang_en_cz - added MSG_LANGUAGE_NAME --- lang/lang_en.txt | 3 +++ lang/lang_en_cz.txt | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/lang/lang_en.txt b/lang/lang_en.txt index 170eb8ea..caf1ef8b 100644 --- a/lang/lang_en.txt +++ b/lang/lang_en.txt @@ -217,6 +217,9 @@ #MSG_SELFTEST_ENDSTOPS c=0 r=0 "Endstops" +#MSG_LANGUAGE_NAME c=0 r=0 +"English" + #MSG_Enqueing c=0 r=0 "enqueing \x22" diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index f7d8989d..19eba930 100644 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -290,6 +290,10 @@ "Endstops" "Endstops" +#MSG_LANGUAGE_NAME c=0 r=0 +"English" +"Cestina" + #MSG_Enqueing c=0 r=0 "enqueing \x22" "enqueing \x22" From baa66a08877976d12f9d470de6ccd5ea9ca08beb Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 28 May 2018 17:14:55 +0200 Subject: [PATCH 50/68] New ML support - secondary language name, language selection --- Firmware/Marlin_main.cpp | 12 +++++++----- Firmware/language.c | 10 +++++++++- Firmware/language.h | 13 +++++++++---- lang/postbuild.sh | 2 +- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1229e10a..0f79a78d 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1271,11 +1271,13 @@ void setup() // If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version // is being written into the EEPROM, so the update procedure will be triggered only once. -/// lang_selected = eeprom_read_byte((uint8_t*)EEPROM_LANG); -/// if (lang_selected >= LANG_NUM){ -/// lcd_mylang(); -/// } - lang_select(1); + lang_selected = eeprom_read_byte((uint8_t*)EEPROM_LANG); + if (lang_selected >= LANG_NUM) + { + lcd_mylang(); + } + lang_select(lang_selected); + puts_P(_n("\nNew ML support")); printf_P(_n(" lang_selected = %d\n"), lang_selected); printf_P(_n(" &_SEC_LANG = 0x%04x\n"), &_SEC_LANG); diff --git a/Firmware/language.c b/Firmware/language.c index 67b80f68..0985ec31 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -74,4 +74,12 @@ const char* lang_select(unsigned char lang) ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16)))); //read relative offset of first string (language name) return (const char*)((char*)lang_table + ui); //return calculated pointer #endif //(LANG_MODE == 0) -} \ No newline at end of file +} + +const char* lang_get_name(unsigned char lang) +{ + if (lang == 0) return MSG_LANGUAGE_NAME + 2; + return lang_get_sec_lang_str(MSG_LANGUAGE_NAME); +} + +const char MSG_LANGUAGE_NAME[] PROGMEM_I1 = ISTR("English"); ////c=0 r=0 diff --git a/Firmware/language.h b/Firmware/language.h index 193fcda2..c898ee48 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -44,15 +44,16 @@ // Language indices into their particular symbol tables. -#define LANG_ID_EN 0 -#define LANG_ID_CZ 1 +#define LANG_ID_PRI 0 +#define LANG_ID_SEC 1 + // Language is not defined and it shall be selected from the menu. #define LANG_ID_FORCE_SELECTION 254 // Language is not defined on a virgin RAMBo board. #define LANG_ID_UNDEFINED 255 // Default language ID, if no language is selected. -#define LANG_ID_DEFAULT LANG_ID_CZ +#define LANG_ID_DEFAULT LANG_ID_PRI // Number of languages available in the language table. #define LANG_NUM 2 @@ -72,6 +73,7 @@ extern const char _SEC_LANG[LANG_SIZE_RESERVED]; extern const char* lang_get_translation(const char* s); extern const char* lang_get_sec_lang_str(const char* s); extern const char* lang_select(unsigned char lang); +extern const char* lang_get_name(unsigned char lang); #if defined(__cplusplus) } @@ -79,9 +81,12 @@ extern const char* lang_select(unsigned char lang); #define CAT2(_s1, _s2) _s1 #define CAT4(_s1, _s2, _s3, _s4) _s1 -#define MSG_LANGUAGE_NAME_EXPLICIT(i) ((i==0)?PSTR("ENG"):PSTR("CZE")) +#define MSG_LANGUAGE_NAME_EXPLICIT(i) lang_get_name(i) + +extern const char MSG_LANGUAGE_NAME[]; #include "messages.h" + #endif //__LANGUAGE_H diff --git a/lang/postbuild.sh b/lang/postbuild.sh index 4c26f5cd..70a4a314 100644 --- a/lang/postbuild.sh +++ b/lang/postbuild.sh @@ -28,7 +28,7 @@ LANG=$1 #if [ -z "$LANG" ]; then LANG='cz'; fi # # Params: -IGNORE_MISSING_TEXT=0 +IGNORE_MISSING_TEXT=1 function finish { From b3f4e1f6e42a0b354e545d4a5f3ac93732004590 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Mon, 28 May 2018 19:41:16 +0200 Subject: [PATCH 51/68] New ML support - language menu --- Firmware/language.c | 10 +++++++++ Firmware/language.h | 2 +- Firmware/ultralcd.cpp | 52 ++++++++++++++++++++++--------------------- 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/Firmware/language.c b/Firmware/language.c index 0985ec31..c51fc60e 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -76,6 +76,16 @@ const char* lang_select(unsigned char lang) #endif //(LANG_MODE == 0) } +unsigned char lang_get_count() +{ + uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space + ui += 0x00ff; //add 1 page + ui &= 0xff00; //align to page + lang_table_t* _lang_table = ui; //table pointer + if (pgm_read_dword(((uint32_t*)(_lang_table + 0))) == 0x4bb45aa5) return 2; + return 1; +} + const char* lang_get_name(unsigned char lang) { if (lang == 0) return MSG_LANGUAGE_NAME + 2; diff --git a/Firmware/language.h b/Firmware/language.h index c898ee48..ec641334 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -73,6 +73,7 @@ extern const char _SEC_LANG[LANG_SIZE_RESERVED]; extern const char* lang_get_translation(const char* s); extern const char* lang_get_sec_lang_str(const char* s); extern const char* lang_select(unsigned char lang); +extern unsigned char lang_get_count(); extern const char* lang_get_name(unsigned char lang); #if defined(__cplusplus) @@ -81,7 +82,6 @@ extern const char* lang_get_name(unsigned char lang); #define CAT2(_s1, _s2) _s1 #define CAT4(_s1, _s2, _s3, _s4) _s1 -#define MSG_LANGUAGE_NAME_EXPLICIT(i) lang_get_name(i) extern const char MSG_LANGUAGE_NAME[]; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ae5ef9c2..e940e488 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3759,14 +3759,12 @@ void lcd_force_language_selection() { static void lcd_language_menu() { START_MENU(); - if (langsel == LANGSEL_OFF) { + if (langsel == LANGSEL_OFF) MENU_ITEM(back, _T(MSG_SETTINGS), 0); - } else if (langsel == LANGSEL_ACTIVE) { + else if (langsel == LANGSEL_ACTIVE) MENU_ITEM(back, _T(MSG_WATCH), 0); - } - for (int i=0;i3) first = cursor-3; - if (cursor==LANG_NUM && LANG_NUM>4) first = LANG_NUM-4; - if (cursor==LANG_NUM && LANG_NUM==4) first = LANG_NUM-4; + if (cursor==lang_cnt && lang_cnt>4) first = lang_cnt-4; + if (cursor==lang_cnt && lang_cnt==4) first = lang_cnt-4; lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(1, 0); - lcd_printPGM(MSG_LANGUAGE_NAME_EXPLICIT(first+0)); + lcd_printPGM(lang_get_name(first+0)); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(1, 1); - lcd_printPGM(MSG_LANGUAGE_NAME_EXPLICIT(first+1)); + lcd_printPGM(lang_get_name(first+1)); lcd.setCursor(0, 2); lcd.print(" "); - if (LANG_NUM > 2){ + if (lang_cnt > 2){ lcd.setCursor(1, 2); - lcd_printPGM(MSG_LANGUAGE_NAME_EXPLICIT(first+2)); + lcd_printPGM(lang_get_name(first+2)); } lcd.setCursor(0, 3); lcd.print(" "); - if (LANG_NUM>3) { + if (lang_cnt>3) { lcd.setCursor(1, 3); - lcd_printPGM(MSG_LANGUAGE_NAME_EXPLICIT(first+3)); + lcd_printPGM(lang_get_name(first+3)); } if (cursor==1) lcd.setCursor(0, 0); if (cursor==2) lcd.setCursor(0, 1); if (cursor>2) lcd.setCursor(0, 2); - if (cursor==LANG_NUM && LANG_NUM>3) lcd.setCursor(0, 3); + if (cursor==lang_cnt && lang_cnt>3) lcd.setCursor(0, 3); lcd.print(">"); - if (cursor4) { + if (cursor4) { lcd.setCursor(19,3); lcd.print("\x01"); } - if (cursor>3 && LANG_NUM>4) { + if (cursor>3 && lang_cnt>4) { lcd.setCursor(19,0); lcd.print("^"); - } + } } void lcd_mylang_drawcursor(int cursor) { + unsigned char lang_cnt = lang_get_count(); if (cursor==1) lcd.setCursor(0, 1); - if (cursor>1 && cursor1 && cursor"); } -void lcd_mylang() { +void lcd_mylang() +{ int enc_dif = 0; int cursor_pos = 1; lang_selected=255; int hlaska=1; int counter=0; + unsigned char lang_cnt = lang_get_count(); lcd_set_custom_characters_arrows(); lcd_implementation_clear(); @@ -4667,7 +4670,6 @@ void lcd_mylang() { lcd_mylang_drawmenu(cursor_pos); - enc_dif = encoderDiff; while ( (lang_selected == 255) ) { @@ -4686,8 +4688,8 @@ void lcd_mylang() { cursor_pos ++; } - if (cursor_pos > LANG_NUM) { - cursor_pos = LANG_NUM; + if (cursor_pos > lang_cnt) { + cursor_pos = lang_cnt; } if (cursor_pos < 1) { From 7e79ce8e53897d8cac4df0ce1e7e489a93edbb38 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 28 May 2018 20:26:15 +0200 Subject: [PATCH 52/68] MK3: crash detection for Z axis is active during auto home and mesh bed leveling (normal mode is forced for Z movents); temp cal coordintes corrections; temp cal: xy movents always in safe Z distance from heatbed, Z-axis homing improved --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 613 ++++++++++++++++-------------- Firmware/language_all.cpp | 7 + Firmware/language_all.h | 2 + Firmware/language_cz.h | 1 + Firmware/language_en.h | 1 + Firmware/mesh_bed_calibration.cpp | 19 +- 7 files changed, 345 insertions(+), 299 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 5767b8b2..d9a0efb5 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -434,6 +434,7 @@ void force_high_power_mode(bool start_high_power_section); #endif //TMC2130 // G-codes +void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib); bool gcode_M45(bool onlyZ, int8_t verbosity_level); void gcode_M114(); void gcode_M701(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 624c3673..4021dd23 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2065,6 +2065,9 @@ void homeaxis(int axis, uint8_t cnt, uint8_t* pstep) } else if ((axis==Z_AXIS)?HOMEAXIS_DO(Z):0) { +#ifdef TMC2130 + FORCE_HIGH_POWER_START; +#endif int axis_home_dir = home_dir(axis); current_position[axis] = 0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); @@ -2073,7 +2076,11 @@ void homeaxis(int axis, uint8_t cnt, uint8_t* pstep) plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); st_synchronize(); #ifdef TMC2130 - if ((tmc2130_mode == TMC2130_MODE_NORMAL) && (READ(Z_TMC2130_DIAG) != 0)) return; //Z crash + if (READ(Z_TMC2130_DIAG) != 0) { //Z crash + FORCE_HIGH_POWER_END; + kill(MSG_BED_LEVELING_FAILED_POINT_LOW); + return; + } #endif //TMC2130 current_position[axis] = 0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); @@ -2085,13 +2092,20 @@ void homeaxis(int axis, uint8_t cnt, uint8_t* pstep) plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); st_synchronize(); #ifdef TMC2130 - if ((tmc2130_mode == TMC2130_MODE_NORMAL) && (READ(Z_TMC2130_DIAG) != 0)) return; //Z crash + if (READ(Z_TMC2130_DIAG) != 0) { //Z crash + FORCE_HIGH_POWER_END; + kill(MSG_BED_LEVELING_FAILED_POINT_LOW); + return; + } #endif //TMC2130 axis_is_at_home(axis); destination[axis] = current_position[axis]; feedrate = 0.0; endstops_hit_on_purpose(); axis_known_position[axis] = true; +#ifdef TMC2130 + FORCE_HIGH_POWER_END; +#endif } enable_endstops(endstops_enabled); } @@ -2257,6 +2271,281 @@ void force_high_power_mode(bool start_high_power_section) { } #endif //TMC2130 +void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib){ + st_synchronize(); + +#if 0 + SERIAL_ECHOPGM("G28, initial "); print_world_coordinates(); + SERIAL_ECHOPGM("G28, initial "); print_physical_coordinates(); +#endif + + // Flag for the display update routine and to disable the print cancelation during homing. + homing_flag = true; + + // Either all X,Y,Z codes are present, or none of them. + bool home_all_axes = home_x == home_y && home_x == home_z; + if (home_all_axes) + // No X/Y/Z code provided means to home all axes. + home_x = home_y = home_z = true; + +#ifdef ENABLE_AUTO_BED_LEVELING + plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data) +#endif //ENABLE_AUTO_BED_LEVELING + + // Reset world2machine_rotation_and_skew and world2machine_shift, therefore + // the planner will not perform any adjustments in the XY plane. + // Wait for the motors to stop and update the current position with the absolute values. + world2machine_revert_to_uncorrected(); + + // For mesh bed leveling deactivate the matrix temporarily. + // It is necessary to disable the bed leveling for the X and Y homing moves, so that the move is performed + // in a single axis only. + // In case of re-homing the X or Y axes only, the mesh bed leveling is restored after G28. +#ifdef MESH_BED_LEVELING + uint8_t mbl_was_active = mbl.active; + mbl.active = 0; + current_position[Z_AXIS] = st_get_position_mm(Z_AXIS); +#endif + + // Reset baby stepping to zero, if the babystepping has already been loaded before. The babystepsTodo value will be + // consumed during the first movements following this statement. + if (home_z) + babystep_undo(); + + saved_feedrate = feedrate; + saved_feedmultiply = feedmultiply; + feedmultiply = 100; + previous_millis_cmd = millis(); + + enable_endstops(true); + + memcpy(destination, current_position, sizeof(destination)); + feedrate = 0.0; + + #if Z_HOME_DIR > 0 // If homing away from BED do Z first + if(home_z) + homeaxis(Z_AXIS); + #endif + + #ifdef QUICK_HOME + // In the quick mode, if both x and y are to be homed, a diagonal move will be performed initially. + if(home_x && home_y) //first diagonal move + { + current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0; + + int x_axis_home_dir = home_dir(X_AXIS); + + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[X_AXIS] = 1.5 * max_length(X_AXIS) * x_axis_home_dir;destination[Y_AXIS] = 1.5 * max_length(Y_AXIS) * home_dir(Y_AXIS); + feedrate = homing_feedrate[X_AXIS]; + if(homing_feedrate[Y_AXIS] max_length(Y_AXIS)) { + feedrate *= sqrt(pow(max_length(Y_AXIS) / max_length(X_AXIS), 2) + 1); + } else { + feedrate *= sqrt(pow(max_length(X_AXIS) / max_length(Y_AXIS), 2) + 1); + } + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + axis_is_at_home(X_AXIS); + axis_is_at_home(Y_AXIS); + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[X_AXIS] = current_position[X_AXIS]; + destination[Y_AXIS] = current_position[Y_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + feedrate = 0.0; + st_synchronize(); + endstops_hit_on_purpose(); + + current_position[X_AXIS] = destination[X_AXIS]; + current_position[Y_AXIS] = destination[Y_AXIS]; + current_position[Z_AXIS] = destination[Z_AXIS]; + } + #endif /* QUICK_HOME */ + +#ifdef TMC2130 + if(home_x) + { + if (!calib) + homeaxis(X_AXIS); + else + tmc2130_home_calibrate(X_AXIS); + } + + if(home_y) + { + if (!calib) + homeaxis(Y_AXIS); + else + tmc2130_home_calibrate(Y_AXIS); + } +#endif //TMC2130 + + + if(code_seen(axis_codes[X_AXIS]) && code_value_long() != 0) + current_position[X_AXIS]=code_value()+add_homing[X_AXIS]; + + if(code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) + current_position[Y_AXIS]=code_value()+add_homing[Y_AXIS]; + + #if Z_HOME_DIR < 0 // If homing towards BED do Z last + #ifndef Z_SAFE_HOMING + if(home_z) { + #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) + destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed + feedrate = max_feedrate[Z_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + #endif // defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) + #if (defined(MESH_BED_LEVELING) && !defined(MK1BP)) // If Mesh bed leveling, move X&Y to safe position for home + if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] )) + { + homeaxis(X_AXIS); + homeaxis(Y_AXIS); + } + // 1st mesh bed leveling measurement point, corrected. + world2machine_initialize(); + world2machine(pgm_read_float(bed_ref_points_4), pgm_read_float(bed_ref_points_4+1), destination[X_AXIS], destination[Y_AXIS]); + world2machine_reset(); + if (destination[Y_AXIS] < Y_MIN_POS) + destination[Y_AXIS] = Y_MIN_POS; + destination[Z_AXIS] = MESH_HOME_Z_SEARCH; // Set destination away from bed + feedrate = homing_feedrate[Z_AXIS]/10; + current_position[Z_AXIS] = 0; + enable_endstops(false); +#ifdef DEBUG_BUILD + SERIAL_ECHOLNPGM("plan_set_position()"); + MYSERIAL.println(current_position[X_AXIS]);MYSERIAL.println(current_position[Y_AXIS]); + MYSERIAL.println(current_position[Z_AXIS]);MYSERIAL.println(current_position[E_AXIS]); +#endif + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +#ifdef DEBUG_BUILD + SERIAL_ECHOLNPGM("plan_buffer_line()"); + MYSERIAL.println(destination[X_AXIS]);MYSERIAL.println(destination[Y_AXIS]); + MYSERIAL.println(destination[Z_AXIS]);MYSERIAL.println(destination[E_AXIS]); + MYSERIAL.println(feedrate);MYSERIAL.println(active_extruder); +#endif + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + current_position[X_AXIS] = destination[X_AXIS]; + current_position[Y_AXIS] = destination[Y_AXIS]; + enable_endstops(true); + endstops_hit_on_purpose(); + homeaxis(Z_AXIS); + #else // MESH_BED_LEVELING + homeaxis(Z_AXIS); + #endif // MESH_BED_LEVELING + } + #else // defined(Z_SAFE_HOMING): Z Safe mode activated. + if(home_all_axes) { + destination[X_AXIS] = round(Z_SAFE_HOMING_X_POINT - X_PROBE_OFFSET_FROM_EXTRUDER); + destination[Y_AXIS] = round(Z_SAFE_HOMING_Y_POINT - Y_PROBE_OFFSET_FROM_EXTRUDER); + destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed + feedrate = XY_TRAVEL_SPEED/60; + current_position[Z_AXIS] = 0; + + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + current_position[X_AXIS] = destination[X_AXIS]; + current_position[Y_AXIS] = destination[Y_AXIS]; + + homeaxis(Z_AXIS); + } + // Let's see if X and Y are homed and probe is inside bed area. + if(home_z) { + if ( (axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]) \ + && (current_position[X_AXIS]+X_PROBE_OFFSET_FROM_EXTRUDER >= X_MIN_POS) \ + && (current_position[X_AXIS]+X_PROBE_OFFSET_FROM_EXTRUDER <= X_MAX_POS) \ + && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER >= Y_MIN_POS) \ + && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER <= Y_MAX_POS)) { + + current_position[Z_AXIS] = 0; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed + feedrate = max_feedrate[Z_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + + homeaxis(Z_AXIS); + } else if (!((axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]))) { + LCD_MESSAGERPGM(MSG_POSITION_UNKNOWN); + SERIAL_ECHO_START; + SERIAL_ECHOLNRPGM(MSG_POSITION_UNKNOWN); + } else { + LCD_MESSAGERPGM(MSG_ZPROBE_OUT); + SERIAL_ECHO_START; + SERIAL_ECHOLNRPGM(MSG_ZPROBE_OUT); + } + } + #endif // Z_SAFE_HOMING + #endif // Z_HOME_DIR < 0 + + if(code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0) + current_position[Z_AXIS]=code_value()+add_homing[Z_AXIS]; + #ifdef ENABLE_AUTO_BED_LEVELING + if(home_z) + current_position[Z_AXIS] += zprobe_zoffset; //Add Z_Probe offset (the distance is negative) + #endif + + // Set the planner and stepper routine positions. + // At this point the mesh bed leveling and world2machine corrections are disabled and current_position + // contains the machine coordinates. + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + + #ifdef ENDSTOPS_ONLY_FOR_HOMING + enable_endstops(false); + #endif + + feedrate = saved_feedrate; + feedmultiply = saved_feedmultiply; + previous_millis_cmd = millis(); + endstops_hit_on_purpose(); +#ifndef MESH_BED_LEVELING + // If MESH_BED_LEVELING is not active, then it is the original Prusa i3. + // Offer the user to load the baby step value, which has been adjusted at the previous print session. + if(card.sdprinting && eeprom_read_word((uint16_t *)EEPROM_BABYSTEP_Z)) + lcd_adjust_z(); +#endif + + // Load the machine correction matrix + world2machine_initialize(); + // and correct the current_position XY axes to match the transformed coordinate system. + world2machine_update_current(); + +#if (defined(MESH_BED_LEVELING) && !defined(MK1BP)) + if (code_seen(axis_codes[X_AXIS]) || code_seen(axis_codes[Y_AXIS]) || code_seen('W') || code_seen(axis_codes[Z_AXIS])) + { + if (! home_z && mbl_was_active) { + // Re-enable the mesh bed leveling if only the X and Y axes were re-homed. + mbl.active = true; + // and re-adjust the current logical Z axis with the bed leveling offset applicable at the current XY position. + current_position[Z_AXIS] -= mbl.get_z(st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS)); + } + } + else + { + st_synchronize(); + homing_flag = false; + // Push the commands to the front of the message queue in the reverse order! + // There shall be always enough space reserved for these commands. + enquecommand_front_P((PSTR("G80"))); + //goto case_G80; + } +#endif + + if (farm_mode) { prusa_statistics(20); }; + + homing_flag = false; +#if 0 + SERIAL_ECHOPGM("G28, final "); print_world_coordinates(); + SERIAL_ECHOPGM("G28, final "); print_physical_coordinates(); + SERIAL_ECHOPGM("G28, final "); print_mesh_bed_leveling_table(); +#endif +} + + bool gcode_M45(bool onlyZ, int8_t verbosity_level) { bool final_result = false; @@ -2963,284 +3252,16 @@ void process_commands() #endif //FWRETRACT case 28: //G28 Home all Axis one at a time { - st_synchronize(); - -#if 0 - SERIAL_ECHOPGM("G28, initial "); print_world_coordinates(); - SERIAL_ECHOPGM("G28, initial "); print_physical_coordinates(); -#endif - - // Flag for the display update routine and to disable the print cancelation during homing. - homing_flag = true; - // Which axes should be homed? bool home_x = code_seen(axis_codes[X_AXIS]); bool home_y = code_seen(axis_codes[Y_AXIS]); bool home_z = code_seen(axis_codes[Z_AXIS]); // calibrate? bool calib = code_seen('C'); - // Either all X,Y,Z codes are present, or none of them. - bool home_all_axes = home_x == home_y && home_x == home_z; - if (home_all_axes) - // No X/Y/Z code provided means to home all axes. - home_x = home_y = home_z = true; -#ifdef ENABLE_AUTO_BED_LEVELING - plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data) -#endif //ENABLE_AUTO_BED_LEVELING - - // Reset world2machine_rotation_and_skew and world2machine_shift, therefore - // the planner will not perform any adjustments in the XY plane. - // Wait for the motors to stop and update the current position with the absolute values. - world2machine_revert_to_uncorrected(); - - // For mesh bed leveling deactivate the matrix temporarily. - // It is necessary to disable the bed leveling for the X and Y homing moves, so that the move is performed - // in a single axis only. - // In case of re-homing the X or Y axes only, the mesh bed leveling is restored after G28. -#ifdef MESH_BED_LEVELING - uint8_t mbl_was_active = mbl.active; - mbl.active = 0; - current_position[Z_AXIS] = st_get_position_mm(Z_AXIS); -#endif - - // Reset baby stepping to zero, if the babystepping has already been loaded before. The babystepsTodo value will be - // consumed during the first movements following this statement. - if (home_z) - babystep_undo(); - - saved_feedrate = feedrate; - saved_feedmultiply = feedmultiply; - feedmultiply = 100; - previous_millis_cmd = millis(); - - enable_endstops(true); - - memcpy(destination, current_position, sizeof(destination)); - feedrate = 0.0; - - #if Z_HOME_DIR > 0 // If homing away from BED do Z first - if(home_z) - homeaxis(Z_AXIS); - #endif - - #ifdef QUICK_HOME - // In the quick mode, if both x and y are to be homed, a diagonal move will be performed initially. - if(home_x && home_y) //first diagonal move - { - current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0; - - int x_axis_home_dir = home_dir(X_AXIS); - - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[X_AXIS] = 1.5 * max_length(X_AXIS) * x_axis_home_dir;destination[Y_AXIS] = 1.5 * max_length(Y_AXIS) * home_dir(Y_AXIS); - feedrate = homing_feedrate[X_AXIS]; - if(homing_feedrate[Y_AXIS] max_length(Y_AXIS)) { - feedrate *= sqrt(pow(max_length(Y_AXIS) / max_length(X_AXIS), 2) + 1); - } else { - feedrate *= sqrt(pow(max_length(X_AXIS) / max_length(Y_AXIS), 2) + 1); - } - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); - st_synchronize(); - - axis_is_at_home(X_AXIS); - axis_is_at_home(Y_AXIS); - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[X_AXIS] = current_position[X_AXIS]; - destination[Y_AXIS] = current_position[Y_AXIS]; - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); - feedrate = 0.0; - st_synchronize(); - endstops_hit_on_purpose(); - - current_position[X_AXIS] = destination[X_AXIS]; - current_position[Y_AXIS] = destination[Y_AXIS]; - current_position[Z_AXIS] = destination[Z_AXIS]; - } - #endif /* QUICK_HOME */ - -#ifdef TMC2130 - if(home_x) - { - if (!calib) - homeaxis(X_AXIS); - else - tmc2130_home_calibrate(X_AXIS); - } - - if(home_y) - { - if (!calib) - homeaxis(Y_AXIS); - else - tmc2130_home_calibrate(Y_AXIS); - } -#endif //TMC2130 - - - if(code_seen(axis_codes[X_AXIS]) && code_value_long() != 0) - current_position[X_AXIS]=code_value()+add_homing[X_AXIS]; - - if(code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) - current_position[Y_AXIS]=code_value()+add_homing[Y_AXIS]; - - #if Z_HOME_DIR < 0 // If homing towards BED do Z last - #ifndef Z_SAFE_HOMING - if(home_z) { - #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) - destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed - feedrate = max_feedrate[Z_AXIS]; - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); - st_synchronize(); - #endif // defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) - #if (defined(MESH_BED_LEVELING) && !defined(MK1BP)) // If Mesh bed leveling, moxve X&Y to safe position for home - if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] )) - { - homeaxis(X_AXIS); - homeaxis(Y_AXIS); - } - // 1st mesh bed leveling measurement point, corrected. - world2machine_initialize(); - world2machine(pgm_read_float(bed_ref_points_4), pgm_read_float(bed_ref_points_4+1), destination[X_AXIS], destination[Y_AXIS]); - world2machine_reset(); - if (destination[Y_AXIS] < Y_MIN_POS) - destination[Y_AXIS] = Y_MIN_POS; - destination[Z_AXIS] = MESH_HOME_Z_SEARCH; // Set destination away from bed - feedrate = homing_feedrate[Z_AXIS]/10; - current_position[Z_AXIS] = 0; - enable_endstops(false); -#ifdef DEBUG_BUILD - SERIAL_ECHOLNPGM("plan_set_position()"); - MYSERIAL.println(current_position[X_AXIS]);MYSERIAL.println(current_position[Y_AXIS]); - MYSERIAL.println(current_position[Z_AXIS]);MYSERIAL.println(current_position[E_AXIS]); -#endif - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); -#ifdef DEBUG_BUILD - SERIAL_ECHOLNPGM("plan_buffer_line()"); - MYSERIAL.println(destination[X_AXIS]);MYSERIAL.println(destination[Y_AXIS]); - MYSERIAL.println(destination[Z_AXIS]);MYSERIAL.println(destination[E_AXIS]); - MYSERIAL.println(feedrate);MYSERIAL.println(active_extruder); -#endif - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); - st_synchronize(); - current_position[X_AXIS] = destination[X_AXIS]; - current_position[Y_AXIS] = destination[Y_AXIS]; - enable_endstops(true); - endstops_hit_on_purpose(); - homeaxis(Z_AXIS); - #else // MESH_BED_LEVELING - homeaxis(Z_AXIS); - #endif // MESH_BED_LEVELING - } - #else // defined(Z_SAFE_HOMING): Z Safe mode activated. - if(home_all_axes) { - destination[X_AXIS] = round(Z_SAFE_HOMING_X_POINT - X_PROBE_OFFSET_FROM_EXTRUDER); - destination[Y_AXIS] = round(Z_SAFE_HOMING_Y_POINT - Y_PROBE_OFFSET_FROM_EXTRUDER); - destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed - feedrate = XY_TRAVEL_SPEED/60; - current_position[Z_AXIS] = 0; - - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); - st_synchronize(); - current_position[X_AXIS] = destination[X_AXIS]; - current_position[Y_AXIS] = destination[Y_AXIS]; - - homeaxis(Z_AXIS); - } - // Let's see if X and Y are homed and probe is inside bed area. - if(home_z) { - if ( (axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]) \ - && (current_position[X_AXIS]+X_PROBE_OFFSET_FROM_EXTRUDER >= X_MIN_POS) \ - && (current_position[X_AXIS]+X_PROBE_OFFSET_FROM_EXTRUDER <= X_MAX_POS) \ - && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER >= Y_MIN_POS) \ - && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER <= Y_MAX_POS)) { - - current_position[Z_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed - feedrate = max_feedrate[Z_AXIS]; - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); - st_synchronize(); - - homeaxis(Z_AXIS); - } else if (!((axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]))) { - LCD_MESSAGERPGM(MSG_POSITION_UNKNOWN); - SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(MSG_POSITION_UNKNOWN); - } else { - LCD_MESSAGERPGM(MSG_ZPROBE_OUT); - SERIAL_ECHO_START; - SERIAL_ECHOLNRPGM(MSG_ZPROBE_OUT); - } - } - #endif // Z_SAFE_HOMING - #endif // Z_HOME_DIR < 0 - - if(code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0) - current_position[Z_AXIS]=code_value()+add_homing[Z_AXIS]; - #ifdef ENABLE_AUTO_BED_LEVELING - if(home_z) - current_position[Z_AXIS] += zprobe_zoffset; //Add Z_Probe offset (the distance is negative) - #endif - - // Set the planner and stepper routine positions. - // At this point the mesh bed leveling and world2machine corrections are disabled and current_position - // contains the machine coordinates. - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - - #ifdef ENDSTOPS_ONLY_FOR_HOMING - enable_endstops(false); - #endif - - feedrate = saved_feedrate; - feedmultiply = saved_feedmultiply; - previous_millis_cmd = millis(); - endstops_hit_on_purpose(); -#ifndef MESH_BED_LEVELING - // If MESH_BED_LEVELING is not active, then it is the original Prusa i3. - // Offer the user to load the baby step value, which has been adjusted at the previous print session. - if(card.sdprinting && eeprom_read_word((uint16_t *)EEPROM_BABYSTEP_Z)) - lcd_adjust_z(); -#endif - - // Load the machine correction matrix - world2machine_initialize(); - // and correct the current_position XY axes to match the transformed coordinate system. - world2machine_update_current(); - -#if (defined(MESH_BED_LEVELING) && !defined(MK1BP)) - if (code_seen(axis_codes[X_AXIS]) || code_seen(axis_codes[Y_AXIS]) || code_seen('W') || code_seen(axis_codes[Z_AXIS])) - { - if (! home_z && mbl_was_active) { - // Re-enable the mesh bed leveling if only the X and Y axes were re-homed. - mbl.active = true; - // and re-adjust the current logical Z axis with the bed leveling offset applicable at the current XY position. - current_position[Z_AXIS] -= mbl.get_z(st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS)); - } - } - else - { - st_synchronize(); - homing_flag = false; - // Push the commands to the front of the message queue in the reverse order! - // There shall be always enough space reserved for these commands. - // enquecommand_front_P((PSTR("G80"))); - goto case_G80; - } -#endif - - if (farm_mode) { prusa_statistics(20); }; - - homing_flag = false; -#if 0 - SERIAL_ECHOPGM("G28, final "); print_world_coordinates(); - SERIAL_ECHOPGM("G28, final "); print_physical_coordinates(); - SERIAL_ECHOPGM("G28, final "); print_mesh_bed_leveling_table(); -#endif - break; + gcode_G28(home_x, home_y, home_z, calib); + + break; } #ifdef ENABLE_AUTO_BED_LEVELING case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points. @@ -3455,6 +3476,14 @@ void process_commands() #ifdef PINDA_THERMISTOR if (true) { + + if (calibration_status() >= CALIBRATION_STATUS_XYZ_CALIBRATION) { + //we need to know accurate position of first calibration point + //if xyz calibration was not performed yet, interrupt temperature calibration and inform user that xyz cal. is needed + lcd_show_fullscreen_message_and_wait_P(MSG_XYZ_CAL_NEEDED); + break; + } + if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])) { // We don't know where we are! HOME! @@ -3469,6 +3498,8 @@ void process_commands() if (result) { + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); current_position[Z_AXIS] = 50; current_position[Y_AXIS] = 180; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); @@ -3478,12 +3509,8 @@ void process_commands() current_position[X_AXIS] = pgm_read_float(bed_ref_points_4); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); - feedrate = homing_feedrate[Z_AXIS] / 10; - enable_endstops(true); - endstops_hit_on_purpose(); - homeaxis(Z_AXIS); - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - enable_endstops(false); + gcode_G28(false, false, true, false); + } if ((current_temperature_pinda > 35) && (farm_mode == false)) { //waiting for PIDNA probe to cool down in case that we are not in farm mode @@ -3513,8 +3540,11 @@ void process_commands() custom_message_type = 4; custom_message_state = 1; custom_message = MSG_TEMP_CALIBRATION; + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); current_position[X_AXIS] = PINDA_PREHEAT_X; current_position[Y_AXIS] = PINDA_PREHEAT_Y; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); current_position[Z_AXIS] = PINDA_PREHEAT_Z; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); @@ -3527,11 +3557,10 @@ void process_commands() eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process - current_position[Z_AXIS] = 5; + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); - - current_position[X_AXIS] = pgm_read_float(bed_ref_points); - current_position[Y_AXIS] = pgm_read_float(bed_ref_points + 1); + current_position[X_AXIS] = pgm_read_float(bed_ref_points_4); + current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); @@ -3572,8 +3601,11 @@ void process_commands() custom_message_state = i + 2; setTargetBed(50 + 10 * (temp - 30) / 5); // setTargetHotend(255, 0); + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); current_position[X_AXIS] = PINDA_PREHEAT_X; current_position[Y_AXIS] = PINDA_PREHEAT_Y; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); current_position[Z_AXIS] = PINDA_PREHEAT_Z; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); @@ -3582,10 +3614,10 @@ void process_commands() delay_keep_alive(1000); serialecho_temperatures(); } - current_position[Z_AXIS] = 5; + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); - current_position[X_AXIS] = pgm_read_float(bed_ref_points); - current_position[Y_AXIS] = pgm_read_float(bed_ref_points + 1); + current_position[X_AXIS] = pgm_read_float(bed_ref_points_4); + current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); find_z_result = find_bed_induction_sensor_point_z(-1.f); @@ -3790,15 +3822,6 @@ void process_commands() #endif //MK1BP case_G80: { -#ifdef TMC2130 - //previously enqueued "G28 W0" failed (crash Z) - if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && !axis_known_position[Z_AXIS] && (READ(Z_TMC2130_DIAG) != 0)) - { - kill(MSG_BED_LEVELING_FAILED_POINT_LOW); - break; - } -#endif //TMC2130 - mesh_bed_leveling_flag = true; int8_t verbosity_level = 0; static bool run = false; diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 1681d26e..7f4585c3 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -2518,6 +2518,13 @@ const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_WIZARD_Z_CAL_CZ }; +const char MSG_XYZ_CAL_NEEDED_EN[] PROGMEM = "Please run XYZ calibration first."; +const char MSG_XYZ_CAL_NEEDED_CZ[] PROGMEM = "Nejdriv spuste kalibraci XYZ prosim."; +const char * const MSG_XYZ_CAL_NEEDED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_XYZ_CAL_NEEDED_EN, + MSG_XYZ_CAL_NEEDED_CZ +}; + const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; const char MSG_XYZ_DETAILS_CZ[] PROGMEM = "Detaily XYZ kal."; const char * const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM] PROGMEM = { diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 45e53c59..2e41eed2 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -818,6 +818,8 @@ extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[LANG_NUM]; #define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT(MSG_WIZARD_XYZ_CAL_LANG_TABLE) extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM]; #define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT(MSG_WIZARD_Z_CAL_LANG_TABLE) +extern const char* const MSG_XYZ_CAL_NEEDED_LANG_TABLE[LANG_NUM]; +#define MSG_XYZ_CAL_NEEDED LANG_TABLE_SELECT(MSG_XYZ_CAL_NEEDED_LANG_TABLE) extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; #define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) extern const char* const MSG_X_MAX_LANG_TABLE[1]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 24722e1f..35771cbd 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -416,3 +416,4 @@ #define MSG_CHANGED_BOTH "Varovani: doslo ke zmene typu tiskarny a motherboardu." #define MSG_WAITING_TEMP_PINDA "Cekani na zchladnuti PINDA" #define MSG_TEMP_CAL_FAILED "Teplotni kalibrace selhala" +#define MSG_XYZ_CAL_NEEDED "Nejdriv spuste kalibraci XYZ prosim." diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 8c036677..7b139a70 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -425,3 +425,4 @@ #define(length=20, lines=4) MSG_CHANGED_BOTH "Warning: both printer type and motherboard type changed." #define(length=20, lines=3) MSG_WAITING_TEMP_PINDA "Waiting for PINDA probe cooling" #define(length=20, lines=8) MSG_TEMP_CAL_FAILED "Temperature calibration failed" +#define(length=20, lines=8) MSG_XYZ_CAL_NEEDED "Please run XYZ calibration first." \ No newline at end of file diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index cadd28de..012ec111 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -962,6 +962,10 @@ static inline void update_current_position_z() // At the current position, find the Z stop. inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int verbosity_level) { +#ifdef TMC2130 + FORCE_HIGH_POWER_START; +#endif + #ifdef SUPPORT_VERBOSITY if(verbosity_level >= 10) SERIAL_ECHOLNPGM("find bed induction sensor point z"); #endif // SUPPORT_VERBOSITY @@ -978,7 +982,7 @@ inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, i if (! endstop_z_hit_on_purpose()) goto error; #ifdef TMC2130 - if ((tmc2130_mode == TMC2130_MODE_NORMAL) && (READ(Z_TMC2130_DIAG) != 0)) goto error; //crash Z detected + if (READ(Z_TMC2130_DIAG) != 0) goto error; //crash Z detected #endif //TMC2130 for (uint8_t i = 0; i < n_iter; ++ i) { @@ -993,7 +997,7 @@ inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, i if (! endstop_z_hit_on_purpose()) goto error; #ifdef TMC2130 - if ((tmc2130_mode == TMC2130_MODE_NORMAL) && (READ(Z_TMC2130_DIAG) != 0)) goto error; //crash Z detected + if (READ(Z_TMC2130_DIAG) != 0) goto error; //crash Z detected #endif //TMC2130 // SERIAL_ECHOPGM("Bed find_bed_induction_sensor_point_z low, height: "); // MYSERIAL.print(current_position[Z_AXIS], 5); @@ -1007,16 +1011,23 @@ inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, i if (n_iter > 1) current_position[Z_AXIS] /= float(n_iter); + enable_endstops(endstops_enabled); enable_z_endstop(endstop_z_enabled); // SERIAL_ECHOLNPGM("find_bed_induction_sensor_point_z 3"); - return true; +#ifdef TMC2130 + FORCE_HIGH_POWER_END; +#endif + return true; error: // SERIAL_ECHOLNPGM("find_bed_induction_sensor_point_z 4"); enable_endstops(endstops_enabled); enable_z_endstop(endstop_z_enabled); - return false; +#ifdef TMC2130 + FORCE_HIGH_POWER_END; +#endif + return false; } #ifdef NEW_XYZCAL From 26724c4a487ea531dbb423ff8c037b585631af92 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 28 May 2018 20:31:57 +0200 Subject: [PATCH 53/68] removed message --- Firmware/Marlin_main.cpp | 2 +- Firmware/language_all.cpp | 13 ++----------- Firmware/language_all.h | 6 ++---- Firmware/language_cz.h | 2 -- Firmware/language_en.h | 3 +-- 5 files changed, 6 insertions(+), 20 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4021dd23..d237ee78 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3480,7 +3480,7 @@ void process_commands() if (calibration_status() >= CALIBRATION_STATUS_XYZ_CALIBRATION) { //we need to know accurate position of first calibration point //if xyz calibration was not performed yet, interrupt temperature calibration and inform user that xyz cal. is needed - lcd_show_fullscreen_message_and_wait_P(MSG_XYZ_CAL_NEEDED); + //lcd_show_fullscreen_message_and_wait_P(); //add message here break; } diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 7f4585c3..2b393eb9 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -2226,10 +2226,8 @@ const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_TEMP_CAL_FAILED_EN[] PROGMEM = "Temperature calibration failed"; -const char MSG_TEMP_CAL_FAILED_CZ[] PROGMEM = "Teplotni kalibrace selhala"; -const char * const MSG_TEMP_CAL_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CAL_FAILED_EN, - MSG_TEMP_CAL_FAILED_CZ +const char * const MSG_TEMP_CAL_FAILED_LANG_TABLE[1] PROGMEM = { + MSG_TEMP_CAL_FAILED_EN }; const char MSG_TEMP_CAL_WARNING_EN[] PROGMEM = "Stable ambient temperature 21-26C is needed a rigid stand is required."; @@ -2518,13 +2516,6 @@ const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_WIZARD_Z_CAL_CZ }; -const char MSG_XYZ_CAL_NEEDED_EN[] PROGMEM = "Please run XYZ calibration first."; -const char MSG_XYZ_CAL_NEEDED_CZ[] PROGMEM = "Nejdriv spuste kalibraci XYZ prosim."; -const char * const MSG_XYZ_CAL_NEEDED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_XYZ_CAL_NEEDED_EN, - MSG_XYZ_CAL_NEEDED_CZ -}; - const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; const char MSG_XYZ_DETAILS_CZ[] PROGMEM = "Detaily XYZ kal."; const char * const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM] PROGMEM = { diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 2e41eed2..c3cb069b 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -728,8 +728,8 @@ extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM]; #define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE) extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM]; #define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE) -extern const char* const MSG_TEMP_CAL_FAILED_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CAL_FAILED LANG_TABLE_SELECT(MSG_TEMP_CAL_FAILED_LANG_TABLE) +extern const char* const MSG_TEMP_CAL_FAILED_LANG_TABLE[1]; +#define MSG_TEMP_CAL_FAILED LANG_TABLE_SELECT_EXPLICIT(MSG_TEMP_CAL_FAILED_LANG_TABLE, 0) extern const char* const MSG_TEMP_CAL_WARNING_LANG_TABLE[1]; #define MSG_TEMP_CAL_WARNING LANG_TABLE_SELECT_EXPLICIT(MSG_TEMP_CAL_WARNING_LANG_TABLE, 0) extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[1]; @@ -818,8 +818,6 @@ extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[LANG_NUM]; #define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT(MSG_WIZARD_XYZ_CAL_LANG_TABLE) extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM]; #define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT(MSG_WIZARD_Z_CAL_LANG_TABLE) -extern const char* const MSG_XYZ_CAL_NEEDED_LANG_TABLE[LANG_NUM]; -#define MSG_XYZ_CAL_NEEDED LANG_TABLE_SELECT(MSG_XYZ_CAL_NEEDED_LANG_TABLE) extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; #define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) extern const char* const MSG_X_MAX_LANG_TABLE[1]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 35771cbd..a1ef81a1 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -415,5 +415,3 @@ #define MSG_CHANGED_PRINTER "Varovani: doslo ke zmene typu tiskarny." #define MSG_CHANGED_BOTH "Varovani: doslo ke zmene typu tiskarny a motherboardu." #define MSG_WAITING_TEMP_PINDA "Cekani na zchladnuti PINDA" -#define MSG_TEMP_CAL_FAILED "Teplotni kalibrace selhala" -#define MSG_XYZ_CAL_NEEDED "Nejdriv spuste kalibraci XYZ prosim." diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 7b139a70..45a4c5a5 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -424,5 +424,4 @@ #define(length=20, lines=4) MSG_CHANGED_PRINTER "Warning: printer type changed." #define(length=20, lines=4) MSG_CHANGED_BOTH "Warning: both printer type and motherboard type changed." #define(length=20, lines=3) MSG_WAITING_TEMP_PINDA "Waiting for PINDA probe cooling" -#define(length=20, lines=8) MSG_TEMP_CAL_FAILED "Temperature calibration failed" -#define(length=20, lines=8) MSG_XYZ_CAL_NEEDED "Please run XYZ calibration first." \ No newline at end of file +#define(length=20, lines=8) MSG_TEMP_CAL_FAILED "Temperature calibration failed" \ No newline at end of file From b47a29b3883bc1a213f21adbef73b8a8ec18de17 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 29 May 2018 15:56:00 +0200 Subject: [PATCH 54/68] New ML support - fixed invalid characters, added some cz translations --- Firmware/ultralcd.cpp | 10 +++++----- lang/lang_en_cz.txt | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e940e488..e6acdf55 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3610,7 +3610,7 @@ static void lcd_crash_mode_info() static uint32_t tim = 0; if ((tim + 1000) < millis()) { - fputs_P(_i("Crash detection canbe turned on only inNormal mode"), lcdout);////MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 + fputs_P(_i("\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"), lcdout);////MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 tim = millis(); } if (lcd_clicked()) @@ -3623,7 +3623,7 @@ static void lcd_crash_mode_info2() static uint32_t tim = 0; if ((tim + 1000) < millis()) { - fputs_P(_i("WARNING:Crash detectiondisabled inStealth mode"), lcdout);////MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 + fputs_P(_i("\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"), lcdout);////MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 tim = millis(); } if (lcd_clicked()) @@ -5995,9 +5995,9 @@ static void lcd_control_temperature_menu() MENU_ITEM_EDIT(int3, _T(MSG_FAN_SPEED), &fanSpeed, 0, 255); #if defined AUTOTEMP && (TEMP_SENSOR_0 != 0) MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled); - MENU_ITEM_EDIT(float3, _i(" MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 10);02 Min"), &autotemp_min, 0, HEATER_0_MAXTEMP - 10);////MSG_MIN c=0 r=0 - MENU_ITEM_EDIT(float3, _i(" MENU_ITEM_EDIT(float3, MSG_MAX, &autotemp_max, 0, HEATER_0_MAXTEMP - 10);02 Max"), &autotemp_max, 0, HEATER_0_MAXTEMP - 10);////MSG_MAX c=0 r=0 - MENU_ITEM_EDIT(float32, _i(" MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0);02 Fact"), &autotemp_factor, 0.0, 1.0);////MSG_FACTOR c=0 r=0 + MENU_ITEM_EDIT(float3, _i(" \002 Min"), &autotemp_min, 0, HEATER_0_MAXTEMP - 10);////MSG_MIN c=0 r=0 + MENU_ITEM_EDIT(float3, _i(" \002 Max"), &autotemp_max, 0, HEATER_0_MAXTEMP - 10);////MSG_MAX c=0 r=0 + MENU_ITEM_EDIT(float32, _i(" \002 Fact"), &autotemp_factor, 0.0, 1.0);////MSG_FACTOR c=0 r=0 #endif END_MENU(); diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index 19eba930..7d0a4cd8 100644 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -436,7 +436,7 @@ #MSG_PRUSA3D_FORUM c=0 r=0 "forum.prusa3d.com" -"\x00" +"forum.prusa3d.com" #MSG_SELFTEST_COOLING_FAN c=20 r=0 "Front print fan?" @@ -472,7 +472,7 @@ #MSG_PRUSA3D_HOWTO c=0 r=0 "howto.prusa3d.com" -"\x00" +"howto.prusa3d.com" #MSG_CHANGE_EXTR c=20 r=1 "Change extruder" @@ -972,7 +972,7 @@ #MSG_PRUSA3D c=0 r=0 "prusa3d.com" -"\x00" +"prusa3d.com" #MSG_BED_CORRECTION_REAR c=14 r=1 "Rear side [um]" From be74b470bcabacc4e90e1b1c8e75389168fb78bf Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 29 May 2018 16:04:02 +0200 Subject: [PATCH 55/68] New ML support - make_po.sh and generated po files. --- lang/po/lang_cz.po | 28 ++ lang/po/lang_de.po | 1120 ++++++++++++++++++++++++++++++++++++++++++++ lang/po/lang_es.po | 324 +++++++++++++ lang/po/lang_it.po | 304 ++++++++++++ lang/po/lang_pl.po | 292 ++++++++++++ lang/po/make_po.sh | 61 +++ 6 files changed, 2129 insertions(+) create mode 100644 lang/po/lang_cz.po create mode 100644 lang/po/lang_de.po create mode 100644 lang/po/lang_es.po create mode 100644 lang/po/lang_it.po create mode 100644 lang/po/lang_pl.po create mode 100644 lang/po/make_po.sh diff --git a/lang/po/lang_cz.po b/lang/po/lang_cz.po new file mode 100644 index 00000000..4d001c67 --- /dev/null +++ b/lang/po/lang_cz.po @@ -0,0 +1,28 @@ +# Translation into Czech. +# +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ultralcd.cpp:6304 +msgid " [off" +msgstr "" + +#: ultralcd.cpp:2362 +msgid "[0;0] point offset" +msgstr "" + +#: ultralcd.cpp:4213 +msgid "E-correct" +msgstr "" + +#: ultralcd.cpp:607 +msgid "Printer disconnected" +msgstr "" + +#: Marlin_main.cpp:3504 +msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." +msgstr "" + diff --git a/lang/po/lang_de.po b/lang/po/lang_de.po new file mode 100644 index 00000000..1f9b68e0 --- /dev/null +++ b/lang/po/lang_de.po @@ -0,0 +1,1120 @@ +# Translation into German. +# +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ultralcd.cpp:6304 +msgid " [off" +msgstr "" + +#: Marlin_main.cpp:1053 +msgid " PlannerBufferBytes: " +msgstr "" + +#: ultralcd.cpp:6000 +msgid " \002 Fact" +msgstr "" + +#: ultralcd.cpp:5999 +msgid " \002 Max" +msgstr "" + +#: ultralcd.cpp:5998 +msgid " \002 Min" +msgstr "" + +#: planner.cpp:745 +msgid " cold extrusion prevented" +msgstr "" + +#: Marlin_main.cpp:1051 +msgid " Free Memory: " +msgstr "" + +#: Marlin_main.cpp:1041 +msgid " Last Updated: " +msgstr "" + +#: mesh_bed_calibration.cpp:2471 +msgid " of 4" +msgstr "" + +#: mesh_bed_calibration.cpp:2471 +msgid " of 4" +msgstr "" + +#: messages.c:59 +msgid " of 9" +msgstr "" + +#: ultralcd.cpp:2362 +msgid "[0;0] point offset" +msgstr "" + +#: ultralcd.cpp:3613 +msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +msgstr "" + +#: ultralcd.cpp:3626 +msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +msgstr "" + +#: +msgid "\xf8Refresh" +msgstr "" + +#: ultralcd.cpp:2487 +msgid "Adjusting Z" +msgstr "" + +#: ultralcd.cpp:7227 +msgid "All correct " +msgstr "" + +#: ultralcd.cpp:1916 +msgid "and press the knob" +msgstr "" + +#: ultralcd.cpp:2803 +msgid "Are left and right Z~carriages all up?" +msgstr "" + +#: ultralcd.cpp:2600 +msgid "Auto adjust Z?" +msgstr "" + +#: messages.c:12 +msgid "Auto home" +msgstr "" + +#: ultralcd.cpp:5796 +msgid "AutoLoad filament" +msgstr "" + +#: ultralcd.cpp:3642 +msgid "Autoloading filament available only when filament sensor is turned on..." +msgstr "" + +#: ultralcd.cpp:2089 +msgid "Autoloading filament is active, just press the knob and insert filament..." +msgstr "" + +#: ultralcd.cpp:6999 +msgid "Axis length" +msgstr "" + +#: ultralcd.cpp:7001 +msgid "Axis" +msgstr "" + +#: ultralcd.cpp:2481 +msgid "Babystepping X" +msgstr "" + +#: ultralcd.cpp:2484 +msgid "Babystepping Y" +msgstr "" + +#: ultralcd.cpp:6943 +msgid "Bed / Heater" +msgstr "" + +#: messages.c:17 +msgid "Bed done" +msgstr "" + +#: messages.c:18 +msgid "Bed Heating" +msgstr "" + +#: ultralcd.cpp:4533 +msgid "Bed level correct" +msgstr "" + +#: messages.c:19 +msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +msgstr "" + +#: Marlin_main.cpp:3989 +msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +msgstr "" + +#: Marlin_main.cpp:3993 +msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset." +msgstr "" + +#: messages.c:16 +msgid "Bed" +msgstr "" + +#: Marlin_main.cpp:4363 +msgid "Begin file list" +msgstr "" + +#: ultralcd.cpp:1738 +msgid "Belt status" +msgstr "" + +#: messages.c:72 +msgid "Blackout occurred. Recover print?" +msgstr "" + +#: ultralcd.cpp:4526 +msgid "Calibrate E" +msgstr "" + +#: ultralcd.cpp:4522 +msgid "Calibrate XYZ" +msgstr "" + +#: messages.c:52 +msgid "Calibrate Z" +msgstr "" + +#: ultralcd.cpp:2756 +msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +msgstr "" + +#: messages.c:21 +msgid "Calibrating Z" +msgstr "" + +#: messages.c:21 +msgid "Calibrating Z" +msgstr "" + +#: ultralcd.cpp:2756 +msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +msgstr "" + +#: ultralcd_implementation_hitachi_HD44780.h:989 +msgid "Calibration done" +msgstr "" + +#: messages.c:60 +msgid "Calibration" +msgstr "" + +#: cardreader.cpp:679 +msgid "Cannot enter subdir: " +msgstr "" + +#: cardreader.cpp:97 +msgid "Cannot open subdir" +msgstr "" + +#: ultralcd.cpp:7542 +msgid "Card inserted" +msgstr "" + +#: ultralcd.cpp:7548 +msgid "Card removed" +msgstr "" + +#: ultralcd.cpp:2018 +msgid "Color not correct" +msgstr "" + +#: messages.c:24 +msgid "Cooldown" +msgstr "" + +#: messages.c:28 +msgid "Crash det. [on]" +msgstr "" + +#: messages.c:26 +msgid "Crash det. [N/A]" +msgstr "" + +#: messages.c:27 +msgid "Crash det. [off]" +msgstr "" + +#: messages.c:25 +msgid "Crash detected." +msgstr "" + +#: ultralcd.cpp:4146 +msgid "Disable steppers" +msgstr "" + +#: messages.c:15 +msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +msgstr "" + +#: ultralcd.cpp:3890 +msgid "E calibration finished. Please clean the nozzle. Click when done." +msgstr "" + +#: ultralcd.cpp:4213 +msgid "E-correct" +msgstr "" + +#: Marlin_main.cpp:4365 +msgid "End file list" +msgstr "" + +#: ultralcd.cpp:6967 +msgid "Endstop not hit" +msgstr "" + +#: ultralcd.cpp:6961 +msgid "Endstop" +msgstr "" + +#: messages.c:31 +msgid "endstops hit: " +msgstr "" + +#: ultralcd.cpp:6949 +msgid "Endstops" +msgstr "" + +#: +msgid "enqueing \x22" +msgstr "" + +#: ultralcd.cpp:5835 +msgid "Error - static memory has been overwritten" +msgstr "" + +#: messages.c:75 +msgid "error writing to file" +msgstr "" + +#: ultralcd.cpp:3656 +msgid "ERROR: Filament sensor is not responding, please check connection." +msgstr "" + +#: messages.c:34 +msgid "ERROR:" +msgstr "" + +#: ultralcd.cpp:7236 +msgid "Extruder fan:" +msgstr "" + +#: ultralcd.cpp:1840 +msgid "Extruder info" +msgstr "" + +#: messages.c:35 +msgid "Extruder" +msgstr "" + +#: messages.c:35 +msgid "Extruder" +msgstr "" + +#: ultralcd.cpp:4178 +msgid "F. autoload [on]" +msgstr "" + +#: messages.c:47 +msgid "F. autoload [N/A]" +msgstr "" + +#: ultralcd.cpp:4181 +msgid "F. autoload [off]" +msgstr "" + +#: messages.c:36 +msgid "Fan speed" +msgstr "" + +#: messages.c:81 +msgid "Fan test" +msgstr "" + +#: ultralcd.cpp:4189 +msgid "Fans check [on]" +msgstr "" + +#: ultralcd.cpp:4192 +msgid "Fans check [off]" +msgstr "" + +#: messages.c:49 +msgid "Fil. sensor [on]" +msgstr "" + +#: ultralcd.cpp:4164 +msgid "Fil. sensor [N/A]" +msgstr "" + +#: messages.c:48 +msgid "Fil. sensor [off]" +msgstr "" + +#: messages.c:37 +msgid "Filament extruding & with correct color?" +msgstr "" + +#: ultralcd.cpp:2014 +msgid "Filament not loaded" +msgstr "" + +#: ultralcd.cpp:7015 +msgid "Filament sensor" +msgstr "" + +#: ultralcd.cpp:7245 +msgid "Filament sensor:" +msgstr "" + +#: ultralcd.cpp:2142 +msgid "Filament used: " +msgstr "" + +#: ultralcd.cpp:7388 +msgid "File incomplete. Continue anyway?" +msgstr "" + +#: cardreader.cpp:395 +msgid "File opened: " +msgstr "" + +#: cardreader.cpp:401 +msgid "File selected" +msgstr "" + +#: ultralcd.cpp:5924 +msgid "Flow" +msgstr "" + +#: ultralcd.cpp:1821 +msgid "forum.prusa3d.com" +msgstr "" + +#: messages.c:78 +msgid "Front print fan?" +msgstr "" + +#: ultralcd.cpp:2565 +msgid "Front side[um]" +msgstr "" + +#: ultralcd.cpp:7007 +msgid "Front/left fans" +msgstr "" + +#: ultralcd.cpp:6937 +msgid "Heater/Thermistor" +msgstr "" + +#: Marlin_main.cpp:7190 +msgid "Heating disabled by safety timer." +msgstr "" + +#: messages.c:51 +msgid "Heating done." +msgstr "" + +#: messages.c:50 +msgid "Heating" +msgstr "" + +#: ultralcd.cpp:1822 +msgid "howto.prusa3d.com" +msgstr "" + +#: ultralcd.cpp:5805 +msgid "Change extruder" +msgstr "" + +#: messages.c:42 +msgid "Change filament" +msgstr "" + +#: ultralcd.cpp:5770 +msgid "Change SD card" +msgstr "" + +#: ultralcd.cpp:1927 +msgid "Change success!" +msgstr "" + +#: ultralcd.cpp:2006 +msgid "Changed correctly?" +msgstr "" + +#: ultralcd.cpp:1899 +msgid "Changing filament!" +msgstr "" + +#: messages.c:84 +msgid "Checking bed " +msgstr "" + +#: ultralcd.cpp:7218 +msgid "Checking endstops" +msgstr "" + +#: ultralcd.cpp:7219 +msgid "Checking hotend " +msgstr "" + +#: messages.c:85 +msgid "Checking sensors " +msgstr "" + +#: ultralcd.cpp:7220 +msgid "Checking X axis " +msgstr "" + +#: ultralcd.cpp:7221 +msgid "Checking Y axis " +msgstr "" + +#: ultralcd.cpp:7222 +msgid "Checking Z axis " +msgstr "" + +#: cmdqueue.cpp:444 +msgid "checksum mismatch, Last Line: " +msgstr "" + +#: mesh_bed_calibration.cpp:2458 +msgid "Improving bed calibration point" +msgstr "" + +#: messages.c:100 +msgid "Info screen" +msgstr "" + +#: ultralcd.cpp:5778 +msgid "Init. SD card" +msgstr "" + +#: messages.c:38 +msgid "Insert filament into extruder 1. Click when done." +msgstr "" + +#: messages.c:39 +msgid "Insert filament into extruder 2. Click when done." +msgstr "" + +#: messages.c:40 +msgid "Insert filament into extruder 3. Click when done." +msgstr "" + +#: messages.c:41 +msgid "Insert filament into extruder 4. Click when done." +msgstr "" + +#: ultralcd.cpp:1913 +msgid "Insert filament" +msgstr "" + +#: messages.c:93 +msgid "Is steel sheet on heatbed?" +msgstr "" + +#: Marlin_main.cpp:7351 +msgid "KILLED. " +msgstr "" + +#: messages.c:79 +msgid "Left hotend fan?" +msgstr "" + +#: ultralcd.cpp:2563 +msgid "Left side [um]" +msgstr "" + +#: messages.c:14 +msgid "Live adjust Z" +msgstr "" + +#: messages.c:54 +msgid "Load filament" +msgstr "" + +#: ultralcd.cpp:1939 +msgid "Loading color" +msgstr "" + +#: messages.c:55 +msgid "Loading filament" +msgstr "" + +#: ultralcd.cpp:6991 +msgid "Loose pulley" +msgstr "" + +#: Marlin_main.cpp:7464 +msgid "M104 Invalid extruder " +msgstr "" + +#: Marlin_main.cpp:7467 +msgid "M105 Invalid extruder " +msgstr "" + +#: Marlin_main.cpp:7470 +msgid "M109 Invalid extruder " +msgstr "" + +#: Marlin_main.cpp:5336 +msgid "M200 Invalid extruder " +msgstr "" + +#: Marlin_main.cpp:7473 +msgid "M218 Invalid extruder " +msgstr "" + +#: Marlin_main.cpp:7476 +msgid "M221 Invalid extruder " +msgstr "" + +#: messages.c:57 +msgid "Main" +msgstr "" + +#: ultralcd.cpp:3840 +msgid "Mark filament 100mm from extruder body. Click when done." +msgstr "" + +#: messages.c:58 +msgid "Measuring reference height of calibration point" +msgstr "" + +#: ultralcd.cpp:4528 +msgid "Mesh Bed Leveling" +msgstr "" + +#: messages.c:91 +msgid "Mode [Normal]" +msgstr "" + +#: messages.c:90 +msgid "Mode [silent]" +msgstr "" + +#: messages.c:92 +msgid "Mode [Stealth]" +msgstr "" + +#: messages.c:13 +msgid "Mode [auto power]" +msgstr "" + +#: messages.c:89 +msgid "Mode [high power]" +msgstr "" + +#: messages.c:86 +msgid "Motor" +msgstr "" + +#: ultralcd.cpp:4142 +msgid "Move axis" +msgstr "" + +#: ultralcd.cpp:3557 +msgid "Move X" +msgstr "" + +#: ultralcd.cpp:3558 +msgid "Move Y" +msgstr "" + +#: ultralcd.cpp:3559 +msgid "Move Z" +msgstr "" + +#: util.cpp:292 +msgid "New firmware version available:" +msgstr "" + +#: cmdqueue.cpp:456 +msgid "No Checksum with line number, Last Line: " +msgstr "" + +#: Marlin_main.cpp:4352 +msgid "No move." +msgstr "" + +#: ultralcd.cpp:5776 +msgid "No SD card" +msgstr "" + +#: Marlin_main.cpp:4904 +msgid "No thermistors - no temperature" +msgstr "" + +#: messages.c:61 +msgid "No" +msgstr "" + +#: ultralcd.cpp:6939 +msgid "Not connected" +msgstr "" + +#: messages.c:82 +msgid "Not spinning" +msgstr "" + +#: ultralcd.cpp:1537 +msgid "Nozzle FAN:" +msgstr "" + +#: messages.c:62 +msgid "Nozzle" +msgstr "" + +#: ultralcd.cpp:5987 +msgid "Nozzle2" +msgstr "" + +#: ultralcd.cpp:5990 +msgid "Nozzle3" +msgstr "" + +#: messages.c:63 +msgid "ok" +msgstr "" + +#: Marlin_main.cpp:1364 +msgid "Old settings found. Default PID, Esteps etc. will be set." +msgstr "" + +#: cardreader.cpp:461 +msgid "open failed, File: " +msgstr "" + +#: messages.c:30 +msgid "open" +msgstr "" + +#: cardreader.cpp:196 +msgid "openRoot failed" +msgstr "" + +#: ultralcd.cpp:5750 +msgid "Pause print" +msgstr "" + +#: ultralcd.cpp:3463 +msgid "Pick print" +msgstr "" + +#: messages.c:64 +msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +msgstr "" + +#: messages.c:23 +msgid "Please clean the nozzle for calibration. Click when done." +msgstr "" + +#: ultralcd.cpp:6931 +msgid "Please check :" +msgstr "" + +#: Marlin_main.cpp:6124 +msgid "Please open idler and remove filament manually." +msgstr "" + +#: messages.c:65 +msgid "Please place steel sheet on heatbed." +msgstr "" + +#: messages.c:69 +msgid "Please press the knob to unload filament" +msgstr "" + +#: messages.c:71 +msgid "Please pull out filament immediately" +msgstr "" + +#: messages.c:74 +msgid "Please remove steel sheet from heatbed." +msgstr "" + +#: util.cpp:296 +msgid "Please upgrade." +msgstr "" + +#: messages.c:66 +msgid "Please wait" +msgstr "" + +#: messages.c:67 +msgid "PowerUp" +msgstr "" + +#: messages.c:68 +msgid "Preheat the nozzle!" +msgstr "" + +#: ultralcd.cpp:5739 +msgid "Preheat" +msgstr "" + +#: Marlin_main.cpp:5983 +msgid "Press knob to preheat nozzle and continue." +msgstr "" + +#: messages.c:70 +msgid "Print aborted" +msgstr "" + +#: ultralcd.cpp:1549 +msgid "Print FAN: " +msgstr "" + +#: ultralcd.cpp:7239 +msgid "Print fan:" +msgstr "" + +#: messages.c:22 +msgid "Print from SD" +msgstr "" + +#: ultralcd.cpp:2151 +msgid "Print time: " +msgstr "" + +#: ultralcd.cpp:607 +msgid "Printer disconnected" +msgstr "" + +#: Marlin_main.cpp:7346 +msgid "Printer halted. kill() called!" +msgstr "" + +#: messages.c:46 +msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +msgstr "" + +#: messages.c:33 +msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +msgstr "" + +#: +msgid "Prusa i3 MK3 ready." +msgstr "" + +#: ultralcd.cpp:1820 +msgid "prusa3d.com" +msgstr "" + +#: ultralcd.cpp:2566 +msgid "Rear side [um]" +msgstr "" + +#: Marlin_main.cpp:8247 +msgid "Recovering print " +msgstr "" + +#: Marlin_main.cpp:5255 +msgid "Reporting endstop status" +msgstr "" + +#: Marlin_main.cpp:6869 +msgid "Resend: " +msgstr "" + +#: ultralcd.cpp:4539 +msgid "Reset XYZ calibr." +msgstr "" + +#: ultralcd.cpp:2567 +msgid "Reset" +msgstr "" + +#: ultralcd.cpp:5754 +msgid "Resume print" +msgstr "" + +#: Marlin_main.cpp:4345 +msgid "Resuming print" +msgstr "" + +#: Marlin_main.cpp:4345 +msgid "Resuming print" +msgstr "" + +#: ultralcd.cpp:2564 +msgid "Right side[um]" +msgstr "" + +#: ultralcd.cpp:3835 +msgid "Rotate knob until mark reaches extruder body. Click when done." +msgstr "" + +#: ultralcd.cpp:4227 +msgid "RPi port [on]" +msgstr "" + +#: ultralcd.cpp:4224 +msgid "RPi port [off]" +msgstr "" + +#: ultralcd.cpp:4240 +msgid "SD card [normal]" +msgstr "" + +#: ultralcd.cpp:4238 +msgid "SD card [FlshAir]" +msgstr "" + +#: cardreader.cpp:202 +msgid "SD card ok" +msgstr "" + +#: cardreader.cpp:186 +msgid "SD init fail" +msgstr "" + +#: cardreader.cpp:516 +msgid "SD printing byte " +msgstr "" + +#: messages.c:43 +msgid "Searching bed calibration point" +msgstr "" + +#: ultralcd.cpp:4235 +msgid "Select language" +msgstr "" + +#: ultralcd.cpp:6497 +msgid "Self test OK" +msgstr "" + +#: ultralcd.cpp:6334 +msgid "Self test start " +msgstr "" + +#: ultralcd.cpp:4515 +msgid "Selftest " +msgstr "" + +#: ultralcd.cpp:6929 +msgid "Selftest error !" +msgstr "" + +#: messages.c:80 +msgid "Selftest failed " +msgstr "" + +#: Marlin_main.cpp:1396 +msgid "Selftest will be run to calibrate accurate sensorless rehoming." +msgstr "" + +#: messages.c:88 +msgid "Settings" +msgstr "" + +#: ultralcd.cpp:4536 +msgid "Show end stops" +msgstr "" + +#: Marlin_main.cpp:2974 +msgid "Sleep..." +msgstr "" + +#: cardreader.cpp:754 +msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +msgstr "" + +#: ultralcd.cpp:4250 +msgid "Sort: [None]" +msgstr "" + +#: ultralcd.cpp:4248 +msgid "Sort: [Time]" +msgstr "" + +#: ultralcd.cpp:4249 +msgid "Sort: [Alphabet]" +msgstr "" + +#: cardreader.cpp:761 +msgid "Sorting files" +msgstr "" + +#: ultralcd.cpp:5918 +msgid "Speed" +msgstr "" + +#: messages.c:83 +msgid "Spinning" +msgstr "" + +#: Marlin_main.cpp:3504 +msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." +msgstr "" + +#: ultralcd.cpp:5817 +msgid "Statistics " +msgstr "" + +#: stepper.cpp:345 +msgid "Steprate too high: " +msgstr "" + +#: messages.c:94 +msgid "Stop print" +msgstr "" + +#: messages.c:95 +msgid "STOPPED. " +msgstr "" + +#: ultralcd.cpp:5824 +msgid "Support" +msgstr "" + +#: ultralcd.cpp:7009 +msgid "Swapped" +msgstr "" + +#: ultralcd.cpp:3189 +msgid "Temperature calibration failed" +msgstr "" + +#: ultralcd.cpp:4139 +msgid "Temperature" +msgstr "" + +#: ultralcd.cpp:1846 +msgid "Temperatures" +msgstr "" + +#: ultralcd.cpp:2186 +msgid "Total filament :" +msgstr "" + +#: ultralcd.cpp:2203 +msgid "Total print time :" +msgstr "" + +#: messages.c:29 +msgid "TRIGGERED" +msgstr "" + +#: ultralcd.cpp:5736 +msgid "Tune" +msgstr "" + +#: messages.c:98 +msgid "Unload filament" +msgstr "" + +#: messages.c:99 +msgid "Unloading filament" +msgstr "" + +#: ultralcd.cpp:1849 +msgid "Voltages" +msgstr "" + +#: cardreader.cpp:191 +msgid "volume.init failed" +msgstr "" + +#: Marlin_main.cpp:4317 +msgid "Wait for user..." +msgstr "" + +#: ultralcd.cpp:2719 +msgid "Waiting for nozzle and bed cooling" +msgstr "" + +#: ultralcd.cpp:2683 +msgid "Waiting for PINDA probe cooling" +msgstr "" + +#: Marlin_main.cpp:1356 +msgid "Warning: both printer type and motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1348 +msgid "Warning: motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1352 +msgid "Warning: printer type changed." +msgstr "" + +#: Marlin_main.cpp:946 +msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!" +msgstr "" + +#: Marlin_main.cpp:6123 +msgid "Was filament unload successful?" +msgstr "" + +#: messages.c:87 +msgid "Wiring error" +msgstr "" + +#: messages.c:77 +msgid "workDir open failed" +msgstr "" + +#: cardreader.cpp:424 +msgid "Writing to file: " +msgstr "" + +#: ultralcd.cpp:3159 +msgid "XYZ calibration all right. Skew will be corrected automatically." +msgstr "" + +#: ultralcd.cpp:3156 +msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +msgstr "" + +#: ultralcd.cpp:3137 +msgid "XYZ calibration compromised. Front calibration points not reachable." +msgstr "" + +#: ultralcd.cpp:3143 +msgid "XYZ calibration compromised. Left front calibration point not reachable." +msgstr "" + +#: ultralcd.cpp:3140 +msgid "XYZ calibration compromised. Right front calibration point not reachable." +msgstr "" + +#: ultralcd.cpp:3119 +msgid "XYZ calibration failed. Bed calibration point was not found." +msgstr "" + +#: ultralcd.cpp:3125 +msgid "XYZ calibration failed. Front calibration points not reachable." +msgstr "" + +#: ultralcd.cpp:3131 +msgid "XYZ calibration failed. Left front calibration point not reachable." +msgstr "" + +#: messages.c:20 +msgid "XYZ calibration failed. Please consult the manual." +msgstr "" + +#: ultralcd.cpp:3128 +msgid "XYZ calibration failed. Right front calibration point not reachable." +msgstr "" + +#: ultralcd.cpp:3153 +msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +msgstr "" + +#: messages.c:105 +msgid "Yes" +msgstr "" + +#: Marlin_main.cpp:930 +msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + +#: Marlin_main.cpp:931 +msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + diff --git a/lang/po/lang_es.po b/lang/po/lang_es.po new file mode 100644 index 00000000..9e5952bb --- /dev/null +++ b/lang/po/lang_es.po @@ -0,0 +1,324 @@ +# Translation into Spanish. +# +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ultralcd.cpp:6304 +msgid " [off" +msgstr "" + +#: ultralcd.cpp:2362 +msgid "[0;0] point offset" +msgstr "" + +#: ultralcd.cpp:3613 +msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +msgstr "" + +#: ultralcd.cpp:3626 +msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +msgstr "" + +#: ultralcd.cpp:5796 +msgid "AutoLoad filament" +msgstr "" + +#: ultralcd.cpp:3642 +msgid "Autoloading filament available only when filament sensor is turned on..." +msgstr "" + +#: ultralcd.cpp:2089 +msgid "Autoloading filament is active, just press the knob and insert filament..." +msgstr "" + +#: ultralcd.cpp:6999 +msgid "Axis length" +msgstr "" + +#: ultralcd.cpp:7001 +msgid "Axis" +msgstr "" + +#: ultralcd.cpp:1738 +msgid "Belt status" +msgstr "" + +#: messages.c:72 +msgid "Blackout occurred. Recover print?" +msgstr "" + +#: messages.c:28 +msgid "Crash det. [on]" +msgstr "" + +#: messages.c:26 +msgid "Crash det. [N/A]" +msgstr "" + +#: messages.c:27 +msgid "Crash det. [off]" +msgstr "" + +#: messages.c:25 +msgid "Crash detected." +msgstr "" + +#: ultralcd.cpp:1828 +msgid "Date:" +msgstr "" + +#: ultralcd.cpp:4213 +msgid "E-correct" +msgstr "" + +#: ultralcd.cpp:5835 +msgid "Error - static memory has been overwritten" +msgstr "" + +#: ultralcd.cpp:3656 +msgid "ERROR: Filament sensor is not responding, please check connection." +msgstr "" + +#: ultralcd.cpp:7236 +msgid "Extruder fan:" +msgstr "" + +#: ultralcd.cpp:1840 +msgid "Extruder info" +msgstr "" + +#: ultralcd.cpp:4178 +msgid "F. autoload [on]" +msgstr "" + +#: messages.c:47 +msgid "F. autoload [N/A]" +msgstr "" + +#: ultralcd.cpp:4181 +msgid "F. autoload [off]" +msgstr "" + +#: ultralcd.cpp:4189 +msgid "Fans check [on]" +msgstr "" + +#: ultralcd.cpp:4192 +msgid "Fans check [off]" +msgstr "" + +#: messages.c:49 +msgid "Fil. sensor [on]" +msgstr "" + +#: ultralcd.cpp:4164 +msgid "Fil. sensor [N/A]" +msgstr "" + +#: messages.c:48 +msgid "Fil. sensor [off]" +msgstr "" + +#: ultralcd.cpp:7015 +msgid "Filament sensor" +msgstr "" + +#: ultralcd.cpp:7245 +msgid "Filament sensor:" +msgstr "" + +#: ultralcd.cpp:7388 +msgid "File incomplete. Continue anyway?" +msgstr "" + +#: ultralcd.cpp:7007 +msgid "Front/left fans" +msgstr "" + +#: Marlin_main.cpp:7190 +msgid "Heating disabled by safety timer." +msgstr "" + +#: messages.c:85 +msgid "Checking sensors " +msgstr "" + +#: messages.c:93 +msgid "Is steel sheet on heatbed?" +msgstr "" + +#: ultralcd.cpp:2308 +msgid "Left:" +msgstr "" + +#: ultralcd.cpp:2335 +msgid "Measured skew:" +msgstr "" + +#: messages.c:91 +msgid "Mode [Normal]" +msgstr "" + +#: messages.c:92 +msgid "Mode [Stealth]" +msgstr "" + +#: messages.c:13 +msgid "Mode [auto power]" +msgstr "" + +#: ultralcd.cpp:1537 +msgid "Nozzle FAN:" +msgstr "" + +#: Marlin_main.cpp:1364 +msgid "Old settings found. Default PID, Esteps etc. will be set." +msgstr "" + +#: Marlin_main.cpp:6124 +msgid "Please open idler and remove filament manually." +msgstr "" + +#: messages.c:65 +msgid "Please place steel sheet on heatbed." +msgstr "" + +#: messages.c:69 +msgid "Please press the knob to unload filament" +msgstr "" + +#: messages.c:71 +msgid "Please pull out filament immediately" +msgstr "" + +#: messages.c:74 +msgid "Please remove steel sheet from heatbed." +msgstr "" + +#: Marlin_main.cpp:5983 +msgid "Press knob to preheat nozzle and continue." +msgstr "" + +#: ultralcd.cpp:1549 +msgid "Print FAN: " +msgstr "" + +#: ultralcd.cpp:7239 +msgid "Print fan:" +msgstr "" + +#: ultralcd.cpp:607 +msgid "Printer disconnected" +msgstr "" + +#: Marlin_main.cpp:8247 +msgid "Recovering print " +msgstr "" + +#: ultralcd.cpp:2309 +msgid "Right:" +msgstr "" + +#: ultralcd.cpp:4227 +msgid "RPi port [on]" +msgstr "" + +#: ultralcd.cpp:4224 +msgid "RPi port [off]" +msgstr "" + +#: Marlin_main.cpp:1396 +msgid "Selftest will be run to calibrate accurate sensorless rehoming." +msgstr "" + +#: ultralcd.cpp:2346 +msgid "Severe skew:" +msgstr "" + +#: ultralcd.cpp:2342 +msgid "Slight skew:" +msgstr "" + +#: cardreader.cpp:754 +msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +msgstr "" + +#: ultralcd.cpp:4250 +msgid "Sort: [None]" +msgstr "" + +#: ultralcd.cpp:4248 +msgid "Sort: [Time]" +msgstr "" + +#: ultralcd.cpp:4249 +msgid "Sort: [Alphabet]" +msgstr "" + +#: cardreader.cpp:761 +msgid "Sorting files" +msgstr "" + +#: Marlin_main.cpp:3504 +msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." +msgstr "" + +#: ultralcd.cpp:7009 +msgid "Swapped" +msgstr "" + +#: ultralcd.cpp:3189 +msgid "Temperature calibration failed" +msgstr "" + +#: ultralcd.cpp:1846 +msgid "Temperatures" +msgstr "" + +#: ultralcd.cpp:1849 +msgid "Voltages" +msgstr "" + +#: ultralcd.cpp:2683 +msgid "Waiting for PINDA probe cooling" +msgstr "" + +#: Marlin_main.cpp:1356 +msgid "Warning: both printer type and motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1348 +msgid "Warning: motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1352 +msgid "Warning: printer type changed." +msgstr "" + +#: Marlin_main.cpp:946 +msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!" +msgstr "" + +#: Marlin_main.cpp:6123 +msgid "Was filament unload successful?" +msgstr "" + +#: ultralcd.cpp:1839 +msgid "XYZ cal. details" +msgstr "" + +#: ultralcd.cpp:2306 +msgid "Y distance from min:" +msgstr "" + +#: Marlin_main.cpp:930 +msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + +#: Marlin_main.cpp:931 +msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + diff --git a/lang/po/lang_it.po b/lang/po/lang_it.po new file mode 100644 index 00000000..f7ce384a --- /dev/null +++ b/lang/po/lang_it.po @@ -0,0 +1,304 @@ +# Translation into Italian. +# +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ultralcd.cpp:6304 +msgid " [off" +msgstr "" + +#: ultralcd.cpp:6000 +msgid " \002 Fact" +msgstr "" + +#: ultralcd.cpp:5999 +msgid " \002 Max" +msgstr "" + +#: ultralcd.cpp:5998 +msgid " \002 Min" +msgstr "" + +#: ultralcd.cpp:2362 +msgid "[0;0] point offset" +msgstr "" + +#: ultralcd.cpp:3613 +msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +msgstr "" + +#: ultralcd.cpp:3626 +msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +msgstr "" + +#: ultralcd.cpp:5796 +msgid "AutoLoad filament" +msgstr "" + +#: ultralcd.cpp:3642 +msgid "Autoloading filament available only when filament sensor is turned on..." +msgstr "" + +#: ultralcd.cpp:2089 +msgid "Autoloading filament is active, just press the knob and insert filament..." +msgstr "" + +#: ultralcd.cpp:6999 +msgid "Axis length" +msgstr "" + +#: ultralcd.cpp:7001 +msgid "Axis" +msgstr "" + +#: ultralcd.cpp:1738 +msgid "Belt status" +msgstr "" + +#: messages.c:72 +msgid "Blackout occurred. Recover print?" +msgstr "" + +#: messages.c:28 +msgid "Crash det. [on]" +msgstr "" + +#: messages.c:26 +msgid "Crash det. [N/A]" +msgstr "" + +#: messages.c:27 +msgid "Crash det. [off]" +msgstr "" + +#: messages.c:25 +msgid "Crash detected." +msgstr "" + +#: ultralcd.cpp:4213 +msgid "E-correct" +msgstr "" + +#: ultralcd.cpp:5835 +msgid "Error - static memory has been overwritten" +msgstr "" + +#: ultralcd.cpp:3656 +msgid "ERROR: Filament sensor is not responding, please check connection." +msgstr "" + +#: ultralcd.cpp:7236 +msgid "Extruder fan:" +msgstr "" + +#: ultralcd.cpp:1840 +msgid "Extruder info" +msgstr "" + +#: ultralcd.cpp:4178 +msgid "F. autoload [on]" +msgstr "" + +#: messages.c:47 +msgid "F. autoload [N/A]" +msgstr "" + +#: ultralcd.cpp:4181 +msgid "F. autoload [off]" +msgstr "" + +#: ultralcd.cpp:4189 +msgid "Fans check [on]" +msgstr "" + +#: ultralcd.cpp:4192 +msgid "Fans check [off]" +msgstr "" + +#: messages.c:49 +msgid "Fil. sensor [on]" +msgstr "" + +#: ultralcd.cpp:4164 +msgid "Fil. sensor [N/A]" +msgstr "" + +#: messages.c:48 +msgid "Fil. sensor [off]" +msgstr "" + +#: ultralcd.cpp:7015 +msgid "Filament sensor" +msgstr "" + +#: ultralcd.cpp:7245 +msgid "Filament sensor:" +msgstr "" + +#: ultralcd.cpp:7388 +msgid "File incomplete. Continue anyway?" +msgstr "" + +#: ultralcd.cpp:7007 +msgid "Front/left fans" +msgstr "" + +#: Marlin_main.cpp:7190 +msgid "Heating disabled by safety timer." +msgstr "" + +#: messages.c:85 +msgid "Checking sensors " +msgstr "" + +#: messages.c:93 +msgid "Is steel sheet on heatbed?" +msgstr "" + +#: messages.c:91 +msgid "Mode [Normal]" +msgstr "" + +#: messages.c:92 +msgid "Mode [Stealth]" +msgstr "" + +#: messages.c:13 +msgid "Mode [auto power]" +msgstr "" + +#: ultralcd.cpp:1537 +msgid "Nozzle FAN:" +msgstr "" + +#: Marlin_main.cpp:1364 +msgid "Old settings found. Default PID, Esteps etc. will be set." +msgstr "" + +#: Marlin_main.cpp:6124 +msgid "Please open idler and remove filament manually." +msgstr "" + +#: messages.c:65 +msgid "Please place steel sheet on heatbed." +msgstr "" + +#: messages.c:69 +msgid "Please press the knob to unload filament" +msgstr "" + +#: messages.c:71 +msgid "Please pull out filament immediately" +msgstr "" + +#: messages.c:74 +msgid "Please remove steel sheet from heatbed." +msgstr "" + +#: Marlin_main.cpp:5983 +msgid "Press knob to preheat nozzle and continue." +msgstr "" + +#: ultralcd.cpp:1549 +msgid "Print FAN: " +msgstr "" + +#: ultralcd.cpp:7239 +msgid "Print fan:" +msgstr "" + +#: ultralcd.cpp:607 +msgid "Printer disconnected" +msgstr "" + +#: Marlin_main.cpp:8247 +msgid "Recovering print " +msgstr "" + +#: ultralcd.cpp:4227 +msgid "RPi port [on]" +msgstr "" + +#: ultralcd.cpp:4224 +msgid "RPi port [off]" +msgstr "" + +#: Marlin_main.cpp:1396 +msgid "Selftest will be run to calibrate accurate sensorless rehoming." +msgstr "" + +#: cardreader.cpp:754 +msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +msgstr "" + +#: ultralcd.cpp:4250 +msgid "Sort: [None]" +msgstr "" + +#: ultralcd.cpp:4248 +msgid "Sort: [Time]" +msgstr "" + +#: ultralcd.cpp:4249 +msgid "Sort: [Alphabet]" +msgstr "" + +#: cardreader.cpp:761 +msgid "Sorting files" +msgstr "" + +#: Marlin_main.cpp:3504 +msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." +msgstr "" + +#: ultralcd.cpp:7009 +msgid "Swapped" +msgstr "" + +#: ultralcd.cpp:3189 +msgid "Temperature calibration failed" +msgstr "" + +#: ultralcd.cpp:1846 +msgid "Temperatures" +msgstr "" + +#: ultralcd.cpp:1849 +msgid "Voltages" +msgstr "" + +#: ultralcd.cpp:2683 +msgid "Waiting for PINDA probe cooling" +msgstr "" + +#: Marlin_main.cpp:1356 +msgid "Warning: both printer type and motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1348 +msgid "Warning: motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1352 +msgid "Warning: printer type changed." +msgstr "" + +#: Marlin_main.cpp:946 +msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!" +msgstr "" + +#: Marlin_main.cpp:6123 +msgid "Was filament unload successful?" +msgstr "" + +#: Marlin_main.cpp:930 +msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + +#: Marlin_main.cpp:931 +msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + diff --git a/lang/po/lang_pl.po b/lang/po/lang_pl.po new file mode 100644 index 00000000..8fb55033 --- /dev/null +++ b/lang/po/lang_pl.po @@ -0,0 +1,292 @@ +# Translation into Polish. +# +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ultralcd.cpp:6304 +msgid " [off" +msgstr "" + +#: ultralcd.cpp:2362 +msgid "[0;0] point offset" +msgstr "" + +#: ultralcd.cpp:3613 +msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +msgstr "" + +#: ultralcd.cpp:3626 +msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" +msgstr "" + +#: ultralcd.cpp:5796 +msgid "AutoLoad filament" +msgstr "" + +#: ultralcd.cpp:3642 +msgid "Autoloading filament available only when filament sensor is turned on..." +msgstr "" + +#: ultralcd.cpp:2089 +msgid "Autoloading filament is active, just press the knob and insert filament..." +msgstr "" + +#: ultralcd.cpp:6999 +msgid "Axis length" +msgstr "" + +#: ultralcd.cpp:7001 +msgid "Axis" +msgstr "" + +#: ultralcd.cpp:1738 +msgid "Belt status" +msgstr "" + +#: messages.c:72 +msgid "Blackout occurred. Recover print?" +msgstr "" + +#: messages.c:28 +msgid "Crash det. [on]" +msgstr "" + +#: messages.c:26 +msgid "Crash det. [N/A]" +msgstr "" + +#: messages.c:27 +msgid "Crash det. [off]" +msgstr "" + +#: messages.c:25 +msgid "Crash detected." +msgstr "" + +#: ultralcd.cpp:4213 +msgid "E-correct" +msgstr "" + +#: ultralcd.cpp:5835 +msgid "Error - static memory has been overwritten" +msgstr "" + +#: ultralcd.cpp:3656 +msgid "ERROR: Filament sensor is not responding, please check connection." +msgstr "" + +#: ultralcd.cpp:7236 +msgid "Extruder fan:" +msgstr "" + +#: ultralcd.cpp:1840 +msgid "Extruder info" +msgstr "" + +#: ultralcd.cpp:4178 +msgid "F. autoload [on]" +msgstr "" + +#: messages.c:47 +msgid "F. autoload [N/A]" +msgstr "" + +#: ultralcd.cpp:4181 +msgid "F. autoload [off]" +msgstr "" + +#: ultralcd.cpp:4189 +msgid "Fans check [on]" +msgstr "" + +#: ultralcd.cpp:4192 +msgid "Fans check [off]" +msgstr "" + +#: messages.c:49 +msgid "Fil. sensor [on]" +msgstr "" + +#: ultralcd.cpp:4164 +msgid "Fil. sensor [N/A]" +msgstr "" + +#: messages.c:48 +msgid "Fil. sensor [off]" +msgstr "" + +#: ultralcd.cpp:7015 +msgid "Filament sensor" +msgstr "" + +#: ultralcd.cpp:7245 +msgid "Filament sensor:" +msgstr "" + +#: ultralcd.cpp:7388 +msgid "File incomplete. Continue anyway?" +msgstr "" + +#: ultralcd.cpp:7007 +msgid "Front/left fans" +msgstr "" + +#: Marlin_main.cpp:7190 +msgid "Heating disabled by safety timer." +msgstr "" + +#: messages.c:85 +msgid "Checking sensors " +msgstr "" + +#: messages.c:93 +msgid "Is steel sheet on heatbed?" +msgstr "" + +#: messages.c:91 +msgid "Mode [Normal]" +msgstr "" + +#: messages.c:92 +msgid "Mode [Stealth]" +msgstr "" + +#: messages.c:13 +msgid "Mode [auto power]" +msgstr "" + +#: ultralcd.cpp:1537 +msgid "Nozzle FAN:" +msgstr "" + +#: Marlin_main.cpp:1364 +msgid "Old settings found. Default PID, Esteps etc. will be set." +msgstr "" + +#: Marlin_main.cpp:6124 +msgid "Please open idler and remove filament manually." +msgstr "" + +#: messages.c:65 +msgid "Please place steel sheet on heatbed." +msgstr "" + +#: messages.c:69 +msgid "Please press the knob to unload filament" +msgstr "" + +#: messages.c:71 +msgid "Please pull out filament immediately" +msgstr "" + +#: messages.c:74 +msgid "Please remove steel sheet from heatbed." +msgstr "" + +#: Marlin_main.cpp:5983 +msgid "Press knob to preheat nozzle and continue." +msgstr "" + +#: ultralcd.cpp:1549 +msgid "Print FAN: " +msgstr "" + +#: ultralcd.cpp:7239 +msgid "Print fan:" +msgstr "" + +#: ultralcd.cpp:607 +msgid "Printer disconnected" +msgstr "" + +#: Marlin_main.cpp:8247 +msgid "Recovering print " +msgstr "" + +#: ultralcd.cpp:4227 +msgid "RPi port [on]" +msgstr "" + +#: ultralcd.cpp:4224 +msgid "RPi port [off]" +msgstr "" + +#: Marlin_main.cpp:1396 +msgid "Selftest will be run to calibrate accurate sensorless rehoming." +msgstr "" + +#: cardreader.cpp:754 +msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +msgstr "" + +#: ultralcd.cpp:4250 +msgid "Sort: [None]" +msgstr "" + +#: ultralcd.cpp:4248 +msgid "Sort: [Time]" +msgstr "" + +#: ultralcd.cpp:4249 +msgid "Sort: [Alphabet]" +msgstr "" + +#: cardreader.cpp:761 +msgid "Sorting files" +msgstr "" + +#: Marlin_main.cpp:3504 +msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." +msgstr "" + +#: ultralcd.cpp:7009 +msgid "Swapped" +msgstr "" + +#: ultralcd.cpp:3189 +msgid "Temperature calibration failed" +msgstr "" + +#: ultralcd.cpp:1846 +msgid "Temperatures" +msgstr "" + +#: ultralcd.cpp:1849 +msgid "Voltages" +msgstr "" + +#: ultralcd.cpp:2683 +msgid "Waiting for PINDA probe cooling" +msgstr "" + +#: Marlin_main.cpp:1356 +msgid "Warning: both printer type and motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1348 +msgid "Warning: motherboard type changed." +msgstr "" + +#: Marlin_main.cpp:1352 +msgid "Warning: printer type changed." +msgstr "" + +#: Marlin_main.cpp:946 +msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!" +msgstr "" + +#: Marlin_main.cpp:6123 +msgid "Was filament unload successful?" +msgstr "" + +#: Marlin_main.cpp:930 +msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + +#: Marlin_main.cpp:931 +msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage." +msgstr "" + diff --git a/lang/po/make_po.sh b/lang/po/make_po.sh new file mode 100644 index 00000000..2cd6dd8d --- /dev/null +++ b/lang/po/make_po.sh @@ -0,0 +1,61 @@ +#!/bin/sh +# +# make_po.sh - multi-language support script +# for generating lang_xx.po +# +SRCDIR="../../Firmware" +# +LANG=$1 +if [ -z "$LANG" ]; then LANG=cz; fi +# + +echo "make_po.sh started" >&2 + +#remove output file if exists +if [ -e lang_$LANG.po ]; then rm lang_$LANG.po; fi + +langname=$(\ + case "$LANG" in + *en*) echo "English" ;; + *cz*) echo "Czech" ;; + *de*) echo "German" ;; + *it*) echo "Italian" ;; + *es*) echo "Spanish" ;; + *pl*) echo "Polish" ;; + esac) + +#write po header +echo "# Translation into $langname." > lang_$LANG.po +echo "#" >> lang_$LANG.po +echo 'msgid ""' >> lang_$LANG.po +echo 'msgstr ""' >> lang_$LANG.po +echo '"MIME-Version: 1.0\n"' >> lang_$LANG.po +echo '"Content-Type: text/plain; charset=UTF-8\n"' >> lang_$LANG.po +echo '"Content-Transfer-Encoding: 8bit\n"' >> lang_$LANG.po +echo >> lang_$LANG.po + +#list .cpp, .c and .h files +files=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h) + +#loop over all messages, print only untranslated (=="\x00") +s0='' +s1='' +s2='' +cat ../lang_en_$LANG.txt | sed "s/\\\\/\\\\\\\\/g;s/^#/#: /" | while read -r s; do + if [ "$s" == "" ]; then + if [ "$s0" == "\"\\\\x00\"" ]; then + search=$(echo -e "$s1") + found=$(grep -m1 -n -F "$search" $files | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///") + echo "#: $found" + echo -e "msgid $s1" + echo 'msgstr ""' + echo + fi + fi + s2=$s1 + s1=$s0 + s0=$s +done >> lang_$LANG.po + +echo "make_po.sh finished" >&2 +exit 0 From 7428d2e3f6a2b98e72e253d960199c751426bca0 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 29 May 2018 17:27:22 +0200 Subject: [PATCH 56/68] New ML support - added message MSG_LANGUAGE_NAME (es, it, pl) --- lang/lang_en_es.txt | 4 ++++ lang/lang_en_it.txt | 4 ++++ lang/lang_en_pl.txt | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index 3a6ace4f..5ae1289d 100644 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -290,6 +290,10 @@ "Endstops" "Topes finales" +#MSG_LANGUAGE_NAME c=0 r=0 +"English" +"Espanol" + #MSG_Enqueing c=0 r=0 "enqueing \x22" "enqueing \x22" diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index b0b4d3f7..e4b71235 100644 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -290,6 +290,10 @@ "Endstops" "Finecorsa (2)" +#MSG_LANGUAGE_NAME c=0 r=0 +"English" +"Italiano" + #MSG_Enqueing c=0 r=0 "enqueing \x22" "enqueing \x22" diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt index b8175edb..20a63844 100644 --- a/lang/lang_en_pl.txt +++ b/lang/lang_en_pl.txt @@ -290,6 +290,10 @@ "Endstops" "Endstops" +#MSG_LANGUAGE_NAME c=0 r=0 +"English" +"Polski" + #MSG_Enqueing c=0 r=0 "enqueing \x22" "enqueing \x22" From 0ddb31d4ebb20602aa73ae72ea77e2c577b43da6 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 29 May 2018 17:28:33 +0200 Subject: [PATCH 57/68] Removed hexfile --- Firmware/Firmware.ino.rambo.hex | 14960 ------------------------------ 1 file changed, 14960 deletions(-) delete mode 100644 Firmware/Firmware.ino.rambo.hex diff --git a/Firmware/Firmware.ino.rambo.hex b/Firmware/Firmware.ino.rambo.hex deleted file mode 100644 index 4f18bc8c..00000000 --- a/Firmware/Firmware.ino.rambo.hex +++ /dev/null @@ -1,14960 +0,0 @@ -:100000000C9424310C9455310C9455310C94553189 -:100010000C9455310C94666C0C9455310C945531FC -:100020000C94E76B0C9455310C9455310C9465CDC0 -:100030000C9455310D9427BF0C9455310C945531C7 -:100040000C9455310D94571D0C9455310C94553129 -:100050000C9455310C9455310D94D2330D944EB708 -:100060000C9455310C9434430C9455310C94553107 -:100070000C9455310C9455310C9455310C945531E8 -:100080000C9455310C9455310C9455310C945531D8 -:100090000C947A430C9455310C9455310C94553191 -:1000A0000C9455310C9455310C9455310C945531B8 -:1000B0000C9455310C9455310C9455310C945531A8 -:1000C0000C9455310C9455310C9455310C94553198 -:1000D0000C9455310C9455310C9455310C94553188 -:1000E0000C945531234227422C4234424942624209 -:1000F0008742B142D4012A01F00136019201680120 -:100100004C01DE018401A801DC014A017601E20113 -:10011000E401B601A0017801CE0132017001CC01E9 -:100120005A01EC01A401EE01EE01EE01520152016F -:1001300052017E018C01520186013C016A01BA0123 -:10014000EA01D001B001A201B40130019E016001B9 -:100150008A016C019401B0014E01AC0140019C0187 -:10016000C601AA01AE01580166019A0154017A0143 -:100170004601B8014401C20128016601CA015001CB -:100180006401084AD73B3BCE016E84BCBFFDC12F42 -:100190003D6C74319ABD56833DDA3D00C77F11BE78 -:1001A000D9E4BB4C3E916BAAAABE000000803F057B -:1001B000A84CCDB2D44EB93836A9020C50B99186AC -:1001C00088083CA6AAAA2ABE000000803F07634216 -:1001D00036B79BD8A71A39685618AEBAAB558C1DDE -:1001E0003CB7CC5763BD6DEDFD753EF6177231BF60 -:1001F000000000803F08000000BE922449123EAB80 -:10020000AAAA2ABECDCCCC4C3E00000080BEABAA30 -:10021000AAAA3E00000000BF000000803F000000CE -:100220000000084178D3BB4387D1133D190E3CC36E -:10023000BD4282AD2B3E68EC8276BED98FE1A93EED -:100240004C80EFFFBE01C4FF7F3F000000000000B4 -:100250000D946FB90D94E6600D943F4B0D94627E42 -:100260000D94C7B80D9463710D948A510D94056176 -:100270000D940A950D94DA4B0D948FB80D94C542E8 -:100280000D941CB90D94555D0D9467B90D945DB92D -:100290000D941A990D94D46F0D9439610D9408B989 -:1002A0000D9479B90D941A720D9453B90D94438538 -:1002B0000D9444B90D94BA710D9475A70D94DA8F0D -:1002C0000D94DBB80D945A410D947DB90D9482B90B -:1002D0000D942F610D9494B80D94F4B80D944C5D69 -:1002E0000D9474710D94CE5B0D943F4C0D94EC6F96 -:1002F0000D9478700D9459B90D945E600D94FC7155 -:100300000D9421680D94AE3F0D9468610D940672B2 -:100310000D943A5D0D94E5B80D942A720D949554A0 -:100320000D94A0AC0D942A610D94FEB80D9419BAE9 -:100330000D9445650D944FB90D9448B90D94D1B8FD -:100340000D945B700D94B7B80D94EC710D940DA1E4 -:100350000D9482610D943AB90D9412B90D943EB981 -:100360000D9426B90D94435D0D94BFB80D942D7076 -:100370000D9461B90D9499B80D94A18D0D942B5FD6 -:100380000D945F860D946BB90D94D4420D944BB9C6 -:100390000D944D410D9475B90D9491710D9440716A -:1003A0000D94ADB80D94DA420D94D1600D94FF5DBB -:1003B0000D9488440D94335A0D94AA610D945361A1 -:1003C0000D94303E0D9403700D9419700D940151ED -:1003D0000D946C4B0D94A3B80D94E4710D94F471CD -:1003E0000D94EB6048617264636F646564204465DA -:1003F0006661756C742053657474696E6773204C04 -:100400006F616465640053746F7265642073657412 -:1004100074696E67732072657472696576656400CD -:1004200046696C616D656E742073657474696E677E -:10043000733A2044697361626C6564002020204D2A -:1004400032303020440046696C616D656E742073F3 -:10045000657474696E67733A002020204D3230391C -:100460002053004175746F2D526574726163743A44 -:1004700020533D3020746F2064697361626C652C79 -:10048000203120746F20696E7465727072657420FB -:10049000657874727564652D6F6E6C79206D6F76FA -:1004A0006573206173207265747261637473206F69 -:1004B00072207265636F766572696573002046000D -:1004C0002020204D3230382053005265636F76650E -:1004D000723A20533D4578747261206C656E677482 -:1004E0006820286D6D2920463A5370656564202880 -:1004F0006D6D2F6D2900205A002046002020204DD0 -:10050000323037205300526574726163743A20535D -:100510003D4C656E67746820286D6D2920463A53FE -:100520007065656420286D6D2F6D29205A3A205A18 -:100530004C69667420286D6D290020440020490014 -:100540002020204D3330342050005049442068652D -:1005500061746265642073657474696E67733A00D0 -:100560002044002049002020204D3330312050000D -:100570005049442073657474696E67733A00205A59 -:100580000020590020204D323036205800486F6D31 -:1005900065206F666673657420286D6D293A0020AA -:1005A0004500205A002059002058002042002054C5 -:1005B0000020204D323035205300416476616E6357 -:1005C0006564207661726961626C65733A20533D9F -:1005D0004D696E20666565647261746520286D6D75 -:1005E0002F73292C20543D4D696E207472617665FD -:1005F0006C20666565647261746520286D6D2F736B -:10060000292C20423D6D696E696D756D207365679B -:100610006D656E742074696D6520286D73292C20BA -:10062000583D6D6178696D756D205859206A657205 -:100630006B20286D6D2F73292C20205A3D6D617819 -:10064000696D756D205A206A65726B20286D6D2F5B -:1006500073292C2020453D6D6178696D756D2045AD -:10066000206A65726B20286D6D2F7329002054005D -:1006700020204D323034205300416363656C657235 -:100680006174696F6E3A20533D616363656C657296 -:100690006174696F6E2C20543D726574726163746D -:1006A00020616363656C65726174696F6E002045DB -:1006B00000205A0020590020204D323031205800AF -:1006C0004D6178696D756D20416363656C6572611C -:1006D00074696F6E20286D6D2F7332293A002045A2 -:1006E00000205A0020590020204D3230332058007D -:1006F0004D6178696D756D206665656472617465BC -:100700007320286D6D2F73293A00204500205A0070 -:1007100020590020204D39322058005374657073E1 -:100720002070657220756E69743A0053657474693F -:100730006E67732053746F72656400454550524F65 -:100740004D204572726F72004D65617373757265ED -:1007500020617667203D2025640A00443231333021 -:10076000202D20544D43323133300A00414443257B -:10077000643D2534640A000941444325643D253421 -:100780006409282553290A004439202D2052656127 -:10079000642F5772697465204144430A00564F4CD8 -:1007A000545F4245440054454D505F414D424945D8 -:1007B0004E5400564F4C545F5057520054454D50C4 -:1007C0005F50494E44410054454D505F42454400FE -:1007D00054454D505F484541544552310054454DB4 -:1007E000505F484541544552300074656D705F70EC -:1007F000696E64613D2564206F66667365745F7A17 -:100800003D25642E253033640A0074656D705F7079 -:10081000696E64613D2564432074656D705F736823 -:100820006966743D2564756D0A0063616C5F73745D -:10083000617475733D25640A004438202D2052658B -:1008400061642F57726974652050494E44410A0013 -:1008500029002C20002C2000706879736963616C7A -:1008600020636F6F7264696E617465733A2028004B -:1008700029002C20002C2000776F726C6420636F9D -:100880006F7264696E617465733A2028006F6B0A39 -:10089000002046002045004731205A004D323400E8 -:1008A0004D32362053256C75004D313036205300C3 -:1008B0004D3832004731204625640047312045320B -:1008C0002A312046343830004731205A0020463241 -:1008D0003030300020590047312058004D38330067 -:1008E000506F736974696F6E2072656164206672FF -:1008F0006F6D20656570726F6D3A004D3233202543 -:1009000073002E67636F0046656564726174653AB3 -:10091000007265636F7665725F6D616368696E65AD -:100920005F73746174655F61667465725F706F7721 -:1009300065725F70616E69632C20696E69746961AC -:100940006C20007265636F7665725F6D61636869C4 -:100950006E655F73746174655F61667465725F7004 -:100960006F7765725F70616E69632C20696E697460 -:1009700069616C20004739322045006375727265E9 -:100980006E745F706F736974696F6E5B455F415819 -:1009900049535D3A0063757272656E745F706F7370 -:1009A0006974696F6E5B5A5F415849535D3A004301 -:1009B000757272656E7420706F736974696F6E20E2 -:1009C000595F415849533A0043757272656E7420FD -:1009D000706F736974696F6E20585F415849533A5C -:1009E0000041667465722077616974696E6720667C -:1009F0006F722074656D703A00473120452D3120AB -:100A000046343830004731204535204631323000F9 -:100A10004D3833004D31393020532564004D31308D -:100A20003920532564004732382058205900473177 -:100A3000205A32352046383030004D313430205382 -:100A40002564004D3130342053256400494E543420 -:100A50000055564C4F202D20656E640073747073E2 -:100A60000020423A0020453A00543A005A206C696E -:100A700076652061646A757374206F7574206F6683 -:100A80002072616E67652E2053657474696E6720ED -:100A9000746F20302E20436C69636B20746F206369 -:100AA0006F6E74696E75652E005A206C69766520CC -:100AB00061646A757374206F7574206F662072614B -:100AC0006E67652E2053657474696E6720746F209D -:100AD000300020573A0020453A00543A004B494C28 -:100AE0004C3A20004D373031002228322900540082 -:100AF000496E76616C6964205420636F64652E00D2 -:100B0000496E76616C6964204D20636F64652E00C8 -:100B10004D3232302053256900203A2000004C41EC -:100B20004E472053454C20464F524345440022280F -:100B300031290020453A00205A3A0020593A002035 -:100B4000453A00205A3A0020593A00583A004D31AF -:100B5000313320530020002E0020423A0020453A35 -:100B600000543A0020413A0020503A002042403AD6 -:100B70000020403A00202F003A00205400202F008F -:100B800020423A00202F006F6B20543A0025692044 -:100B90006D696E2C2025692073656300496E76614E -:100BA0006C6964204D20636F6465004D6573682037 -:100BB000626564206C6576656C696E67206E6F7423 -:100BC000206163746976652E000A002020000A4DBA -:100BD0006561737572656420706F696E74733A0035 -:100BE0000A5A207365617263682068656967687472 -:100BF0003A20002C004E756D20582C593A200020C8 -:100C00006D6963726F6E730045786365737369769F -:100C10006520626564206C6576656C696E6720632B -:100C20006F7272656374696F6E3A200047323820C4 -:100C30005730003A200054656D70657261747572AA -:100C4000652063616C6962726174696F6E20646FA4 -:100C50006E652E20436F6E74696E756520776974BA -:100C600068207072657373696E6720746865206BA5 -:100C70006E6F622E0000205A207368696674202807 -:100C80006D6D293A0050494E44412074656D706580 -:100C90007261747572653A2000002F3600537465D6 -:100CA000703A200000205A20736869667420286D0D -:100CB0006D293A0050494E44412074656D7065724B -:100CC00061747572653A20002F362028736B697045 -:100CD0007065642900537465703A2000005A4552CB -:100CE0004F3A20000073746172742074656D7065F2 -:100CF0007261747572653A200050494E444120700B -:100D0000726F62652063616C6962726174696F6E93 -:100D100020737461727400473238205730000A0023 -:100D2000205A3A200020593A200020583A20004307 -:100D3000616C6962726174696F6E206661696C656D -:100D4000642120436865636B207468652061786561 -:100D50007320616E642072756E20616761696E2E0A -:100D60000043524153485F44455445435445440071 -:100D70004D323900627573793A207061757365641C -:100D800020666F7220696E70757400627573793AAF -:100D90002070617573656420666F7220757365726B -:100DA00000627573793A2070726F63657373696E50 -:100DB00067002055706C6F616420696E2070726FDF -:100DC00067726573730044495341424C45440A00BD -:100DD000454E41424C45440A004653656E736F725E -:100DE0002000504154393132355F696E69743A25BB -:100DF000640A004A616E20203420323031380043CA -:100E00006F6D70696C65643A2000286E6F6E652C9A -:100E10002064656661756C7420636F6E666967290E -:100E2000004A616E20203420323031382031373A88 -:100E300034343A30380020332E312E312D524334A1 -:100E40002062313433650A00737461727400466144 -:100E500063746F7279205245534554001B5B324ACC -:100E60001B5B313B31484F726967696E616C205082 -:100E7000727573612069331B5B323B334850727566 -:100E800073612052657365617263680025002020DC -:100E900020202020002020202020200045524153E7 -:100EA000494E4720616C6C20646174610046616347 -:100EB000746F727920524553455400435241534850 -:100EC0005F5245434F56455200473238205900473C -:100ED0003238205800FFFFFF0000A0400000A04073 -:100EE0000000004000007F43000056439AD9514360 -:100EF00000000000000080C09A99193E00007F4366 -:100F0000000052430000524300000000000080C077 -:100F10009A99193E6563686F3A004572726F723A2A -:100F20000000002110422063308440A550C660E7D5 -:100F300070088129914AA16BB18CC1ADD1CEE1EF8E -:100F4000F13112100273325222B5529442F772D626 -:100F500062399318837BB35AA3BDD39CC3FFF3DEDE -:100F6000E36224433420040114E664C774A4448576 -:100F7000546AA54BB528850995EEE5CFF5ACC58D2E -:100F8000D55336722611163006D776F6669556B4C6 -:100F9000465BB77AA719973887DFF7FEE79DD7BC7E -:100FA000C7C448E5588668A7784008611802282316 -:100FB00038CCC9EDD98EE9AFF9488969990AA92BCE -:100FC000B9F55AD44AB77A966A711A500A333A1266 -:100FD0002AFDDBDCCBBFFB9EEB799B588B3BBB1A1E -:100FE000ABA66C877CE44CC55C222C033C600C41B6 -:100FF0001CAEED8FFDECCDCDDD2AAD0BBD688D496E -:101000009D977EB66ED55EF44E133E322E511E7005 -:101010000E9FFFBEEFDDDFFCCF1BBF3AAF599F78BD -:101020008F8891A981CAB1EBA10CD12DC14EF16F6E -:10103000E18010A100C230E32004502540467067D3 -:1010400060B9839893FBA3DAB33DC31CD37FE35EFF -:10105000F3B1029012F322D2323542145277625623 -:1010600072EAB5CBA5A89589856EF54FE52CD50D0F -:10107000C5E234C324A01481046674476424540573 -:1010800044DBA7FAB79987B8975FE77EF71DC73C9F -:10109000D7D326F2369106B01657667676154634C3 -:1010A000564CD96DC90EF92FE9C899E9898AB9ABAF -:1010B000A94458654806782768C018E1088238A313 -:1010C000287DCB5CDB3FEB1EFBF98BD89BBBAB9A3F -:1010D000BB754A545A376A167AF10AD01AB32A9263 -:1010E0003A2EFD0FED6CDD4DCDAABD8BADE89DC94F -:1010F0008D267C076C645C454CA23C832CE01CC1B3 -:101100000C1FEF3EFF5DCF7CDF9BAFBABFD98FF8DE -:101110009F176E367E554E745E932EB23ED10EF002 -:101120001E7C3C3E5E2B3D3F2F5B5D3B2C2A225CB0 -:10113000004D3234004D3233202573006175746FD9 -:1011400025692E67000A002F000A002E0044656CF6 -:101150006574696F6E206661696C65642C204669F0 -:101160006C653A200046696C652064656C65746541 -:10117000643A002E002E002E002E004E6F7720665F -:10118000726573682066696C653A20004E6F77203F -:10119000646F696E672066696C653A200022207072 -:1011A0006F73002220706172656E743A220053558D -:1011B00042524F5554494E452043414C4C20746196 -:1011C000726765743A2200747279696E6720746F71 -:1011D0002063616C6C207375622D67636F6465209A -:1011E00066696C6573207769746820746F6F206D11 -:1011F000616E79206C6576656C732E204D415820A8 -:101200006C6576656C2069733A00256920686F7596 -:101210007273202569206D696E7574657300544979 -:101220004D454F55543A004D3131300046756C6C88 -:1012300020525820427566666572002220666169F8 -:101240006C65643A204275666665722066756C6CE2 -:101250002100456E717565696E6720746F20746832 -:10126000652066726F6E743A2022002200456E710E -:101270007565696E6720746F207468652066726F8B -:101280006E743A20220022206661696C65643A20FF -:101290004275666665722066756C6C210022004D91 -:1012A000363030005072757361206933204D4B33F6 -:1012B000206F6B005072757361206933204D4B3382 -:1012C0002072656164792E007A5F6D696E3A200044 -:1012D0007A5F6D61783A20005A204F6666736574B4 -:1012E00000795F6D696E3A2000795F6D61783A2010 -:1012F000005920767A64616C656E6F7374206F6438 -:10130000206D696E3A00592064697374616E63657B -:101310002066726F6D206D696E3A00416E6F0059E4 -:10132000657300785F6D696E3A2000785F6D617853 -:101330003A200044657461696C792058595A206BD1 -:10134000616C2E0058595A2063616C2E20646574BC -:1013500061696C73004E796E692070726F76656496 -:1013600075207A206B616C6962726163692E004935 -:101370002077696C6C2072756E207A2063616C69CD -:1013800062726174696F6E206E6F772E004E796E97 -:10139000692070726F766564752078797A206B6148 -:1013A0006C6962726163692E205A616265726520A0 -:1013B000746F20707269626C697A6E6520313220B8 -:1013C0006D696E2E00492077696C6C2072756E20F5 -:1013D00078797A2063616C6962726174696F6E20DA -:1013E0006E6F772E2049742077696C6C2074616B66 -:1013F0006520617070726F782E203132206D696EB9 -:10140000732E004E796E692070726564656872652E -:101410006A6920747279736B752070726F20504CFA -:10142000412E004E6F7720492077696C6C207072D6 -:101430006568656174206E6F7A7A6C6520666F727C -:1014400020504C412E00446F6272792064656E2CEE -:10145000206A73656D2076617365207469736B61B2 -:10146000726E61204F726967696E616C205072758F -:1014700073612069332E204368636574652061625F -:10148000796368205661732070726F7665646C6151 -:10149000206B616C69627261636E696D2070726F3E -:1014A000636573656D3F0048692C204920616D209C -:1014B000796F7572204F726967696E616C20507226 -:1014C000757361206933207072696E7465722E20A5 -:1014D000576F756C6420796F75206C696B65206D32 -:1014E0006520746F20677569646520796F75207455 -:1014F00068726F75676820746865207365747570AD -:101500002070726F636573733F005A61636E75205C -:101510007469736B6E6F7574206C696E6B75206186 -:101520002056792062756465746520706F737475D8 -:10153000706E6520736E697A6F766174207472794B -:10154000736B75206F746163656E696D20746C6177 -:101550006369746B6120646F6B7564206E65646F82 -:101560007361686E657465206F7074696D616C6E0F -:1015700069207679736B792E2050726F686C656480 -:101580006E657465207369206F6272617A6B792071 -:1015900076206E617369207072697275636365206D -:1015A00076206B617069746F6C65204B616C696249 -:1015B0007261636500492077696C6C207374617295 -:1015C0007420746F207072696E74206C696E65206F -:1015D000616E6420796F752077696C6C2067726129 -:1015E0006475616C6C79206C6F77657220746865C6 -:1015F000206E6F7A7A6C6520627920726F746174E4 -:10160000696E6720746865206B6E6F622C20756E42 -:1016100074696C20796F75207265616368206F70E2 -:1016200074696D616C206865696768742E20436811 -:1016300065636B2074686520706963747572657387 -:1016400020696E206F75722068616E64626F6F6BC7 -:1016500020696E20636861707465722043616C69F3 -:1016600062726174696F6E2E004E796E69207A6BBA -:10167000616C696272756A6920767A64616C656E04 -:101680006F7374206D657A69206B6F6E63656D2072 -:10169000747279736B79206120706F7672636865FC -:1016A0006D2068656174626564752E004E6F7720E9 -:1016B000492077696C6C2063616C69627261746542 -:1016C0002064697374616E63652062657477656513 -:1016D0006E20746970206F6620746865206E6F7A62 -:1016E0007A6C6520616E642068656174626564204F -:1016F000737572666163652E004E656A6472697601 -:1017000020706F6D6F63692073656C6674657374A8 -:1017100075207A6B6F6E746F6C756A69206E656A7E -:1017200063617374656A736920636879627920768E -:101730007A6E696B616A696369207072692073658A -:1017400073746176656E69207469736B61726E790A -:101750002E0046697273742C20492077696C6C20C6 -:1017600072756E207468652073656C667465737439 -:1017700020746F20636865636B206D6F73742063E2 -:101780006F6D6D6F6E20617373656D626C79207023 -:10179000726F626C656D732E005370757374656E35 -:1017A000692057697A617264612076796D617A6522 -:1017B00020756C6F7A656E65207679736C65646BE5 -:1017C00079207673656368206B616C69627261630E -:1017D00069206120737075737469206B616C696234 -:1017E0007261636E692070726F636573206F64202D -:1017F0007A616361746B752E20506F6B7261636FD9 -:101800007661743F0052756E6E696E672057697A13 -:101810006172642077696C6C2064656C6574652006 -:1018200063757272656E742063616C696272617453 -:10183000696F6E20726573756C747320616E6420BD -:1018400073746172742066726F6D207468652062B3 -:101850006567696E6E696E672E20436F6E74696E80 -:1018600075653F00436863657465206F70616B6FD9 -:1018700076617420706F736C65646E69206B726F33 -:101880006B206120706F7A6D656E697420767A6462 -:10189000616C656E6F7374206D657A6920747279FE -:1018A000736B6F75206120686561746265643F00C9 -:1018B000446F20796F752077616E7420746F207289 -:1018C0006570656174206C61737420737465702039 -:1018D000746F20726561646A7573742064697374CF -:1018E000616E6365206265747765656E206E6F7AE0 -:1018F0007A6C6520616E6420686561746265643F1E -:101900000057697A61726461206D757A657465202B -:101910006B64796B6F6C6976207A6E6F7675207365 -:10192000707573746974207A206D656E75204361DB -:101930006C6962726174696F6E202D3E2057697AFE -:1019400061726400596F752063616E20616C77610C -:10195000797320726573756D6520746865205769A9 -:101960007A6172642066726F6D2043616C69627285 -:101970006174696F6E202D3E2057697A6172642E02 -:10198000004A6520746F20504C412066696C616D7F -:10199000656E743F00497320697420504C41206685 -:1019A000696C616D656E743F0050726F73696D2074 -:1019B000766C6F7A746520504C412066696C616D5D -:1019C000656E7420646F20657874727564657275D5 -:1019D0002C20706F20746520737469736B6E65744E -:1019E0006520746C616369746B6F2070726F207A0C -:1019F00061766564656E692066696C616D656E749B -:101A0000752E00506C6561736520696E7365727424 -:101A100020504C412066696C616D656E7420746F56 -:101A2000207468652065787472756465722C207402 -:101A300068656E207072657373206B6E6F622074C0 -:101A40006F206C6F61642069742E0050726F73692F -:101A50006D207A61766564746520504C412066691A -:101A60006C616D656E74206120706F207465206FED -:101A7000626E6F7674652057697A61726461207353 -:101A80007469736B6E7574696D207265736574200B -:101A9000746C616369746B612E00506C6561736571 -:101AA000206C6F616420504C412066696C616D65EB -:101AB0006E7420616E64207468656E207265737543 -:101AC0006D652057697A617264206279207265625F -:101AD0006F6F74696E6720746865207072696E74C8 -:101AE00065722E00507265646568726976616D205A -:101AF000747279736B752E2050726F73696D2063E9 -:101B0000656B656A74652E005072656865617469FD -:101B10006E67206E6F7A7A6C652E20506C656173EB -:101B20006520776169742E004A652066696C616D75 -:101B3000656E74207A61766564656E3F0049732036 -:101B400066696C616D656E74206C6F616465643F7D -:101B500000567365206A6520686F746F766F2E007B -:101B6000416C6C20697320646F6E652E2048617033 -:101B70007079207072696E74696E67210050726F9F -:101B800073696D206F63697374657465206865613E -:101B900074626564206120737469736B6E6574652B -:101BA00020746C616369746B6F2E00506C65617397 -:101BB0006520636C65616E20686561746265642090 -:101BC000616E64207468656E207072657373207432 -:101BD0006865206B6E6F622E0050726F73696D20A6 -:101BE0006E61686C65646E65746520646F206D61FC -:101BF0006E75616C752061206F70726176746520FE -:101C000070726F626C656D2E20506F207465206F4E -:101C1000626E6F7674652057697A617264612072B2 -:101C200065626F6F746F76616E696D207469736B36 -:101C300061726E792E00506C656173652063686512 -:101C4000636B206F75722068616E64626F6F6B20CA -:101C5000616E6420666978207468652070726F62B6 -:101C60006C656D2E205468656E20726573756D65A8 -:101C7000207468652057697A6172642062792072E5 -:101C800065626F6F74696E67207468652070726931 -:101C90006E7465722E0057697A6172640020576114 -:101CA000746368646F6720526573657400496E667B -:101CB0006F726D61636500496E666F207363726554 -:101CC000656E0043656B616E69206E61207A6368A2 -:101CD0006C61646E75746920747279736B792061BC -:101CE00020706F646C6F7A6B792E0057616974692C -:101CF0006E6720666F72206E6F7A7A6C6520616EF7 -:101D0000642062656420636F6F6C696E67004B616D -:101D10006C2E207072766E692076727374767900FC -:101D20004669727374206C617965722063616C2EF0 -:101D3000005761697420666F7220757365722E2E6C -:101D40002E00506F757A69746520626568656D2034 -:101D50007469736B75005573656420647572696E80 -:101D600067207072696E74004F70616B6F7661747A -:101D700020767973756E7574692066696C616D651E -:101D80006E74753F0052657065617420756E6C6F7E -:101D90006164696E672066696C616D656E743F0091 -:101DA00056796A6D6F75742066696C616D656E74C5 -:101DB00000556E6C6F61642066696C616D656E7450 -:101DC000005679736F7576616D2066696C616D651B -:101DD0006E7400556E6C6F6164696E672066696C25 -:101DE000616D656E7400556E6B6E6F776E20636FFC -:101DF0006D6D616E643A2022004C61646974005418 -:101E0000756E650053442063617264205B466C7399 -:101E1000684169725D005344206361726420205BF5 -:101E20006E6F726D616C5D005465706C2E206B611D -:101E30006C2E20205B7A61705D0054656D702E20E1 -:101E400063616C2E2020205B6F6E5D005465706CAA -:101E50002E206B616C2E20205B7679705D005465BE -:101E60006D702E2063616C2E20205B6F66665D00B6 -:101E70005465706C6F746E69206B616C696272611D -:101E8000636520646F6B6F6E63656E612E20506FAB -:101E90006B726163756A746520737469736B656DC9 -:101EA00020746C616369746B612E0054656D70659C -:101EB0007261747572652063616C696272617469C4 -:101EC0006F6E2069732066696E69736865642E2081 -:101ED000436C69636B20746F20636F6E74696E75F9 -:101EE000652E005465706C2E206B616C2E202020B6 -:101EF000202020202020200054656D702E2063615A -:101F00006C2E2020202020202020202000546570CE -:101F10006C6F74610054656D706572617475726583 -:101F200000506F64706F726100537570706F7274DF -:101F3000005A61737461766974207469736B00531D -:101F4000746F70207072696E740053544F50504516 -:101F5000442E2000537465707261746520746F6F35 -:101F600020686967683A20004A65207469736B6F5E -:101F7000767920706C6174206E612068656174628E -:101F800065643F00497320737465656C20736865F0 -:101F90006574206F6E20686561746265643F0043FC -:101FA000656C6B6F767920636173203A00546F74AF -:101FB000616C207072696E742074696D65203A00DE -:101FC00046696C616D656E742063656C6B656D2030 -:101FD0003A00546F74616C2066696C616D656E7453 -:101FE000203A00436173207469736B75203A202096 -:101FF000005072696E742074696D653A2020004645 -:10200000696C616D656E74203A20200046696C61D0 -:102010006D656E7420757365643A20200053746199 -:1020200074697374696B61202000537461746973FF -:10203000746963732020004368796261202D204415 -:102040006F736C6F206B207072657069737520738D -:1020500074617469636B652070616D6574692100DA -:102060004572726F72202D20737461746963206DE4 -:10207000656D6F727920686173206265656E206F8F -:102080007665727772697474656E00527963686CF4 -:102090006F73740053706565640054726964656E93 -:1020A0006920202020205B4361735D00536F7274B0 -:1020B0003A2020202020205B54696D655D00547219 -:1020C0006964656E692020205B5A61646E655D00FD -:1020D000536F72743A2020202020205B4E6F6E6573 -:1020E0005D0054726964656E69205B416265636579 -:1020F00064615D00536F72743A20205B416C7068BC -:10210000616265745D0054726964656E6920736F05 -:1021100075626F727500536F7274696E67206669BD -:102120006C65730020536F66747761726520526529 -:10213000736574004C65686B65207A6B6F73656EB0 -:10214000693A00536C6967687420736B65773A006D -:102150004D6F6420202020205B537465616C74688F -:102160005D004D6F6465202020205B537465616CB9 -:1021700074685D004D6F642020202020205B4E6F2E -:10218000726D616C5D004D6F646520202020205BC6 -:102190004E6F726D616C5D0053746176206B6F6E73 -:1021A000632E207370696E2E0053686F7720656E02 -:1021B000642073746F70730054657A6B65207A6B5A -:1021C0006F73656E693A0053657665726520736B4F -:1021D00065773A004E61737461767465207465703A -:1021E0006C6F74753A005365742074656D70657218 -:1021F00061747572653A004E6173746176656E69DB -:102200000053657474696E67730043687962612076 -:102210007A61706F6A656E6900576972696E6720CE -:102220006572726F720050726F686F7A656E6500CA -:10223000537761707065640053656C6620746573D4 -:10224000742073746172742020005469736B6F760C -:10225000792076656E742E3A005072696E7420662D -:10226000616E3A005A6B6F6E74726F6C756A74654A -:10227000203A00506C6561736520636865636B206C -:102280003A0053656C662074657374204F4B004EA2 -:10229000657A61706F6A656E6F20202020004E6F36 -:1022A0007420636F6E6E6563746564004D6F746F48 -:1022B00072004865617465722F546865726D697348 -:1022C000746F720053656E7A6F722066696C616D0F -:1022D000656E74753A0046696C616D656E74207345 -:1022E000656E736F723A00507265646E692F6C652B -:1022F00076792076656E742E0046726F6E742F6C40 -:102300006566742066616E7300546573742076652B -:102310006E74696C61746F72750046616E207465CD -:1023200073740053656C66746573742073656C68B0 -:10233000616C20200053656C66746573742066615F -:10234000696C65642020004C6576792076656E7432 -:102350002E3A0045787472756465722066616E3A33 -:10236000004C6576792076656E74206E61207472FB -:10237000797363653F004C65667420686F74656EA1 -:10238000642066616E3F0053656C667465737420EB -:102390006572726F72202100456E6473746F7020D5 -:1023A0006E6F742068697400456E6473746F707327 -:1023B00000456E6473746F7000507265646E6920BE -:1023C0007469736B6F76792076656E743F00467220 -:1023D0006F6E74207072696E742066616E3F004B80 -:1023E0006F6E74726F6C61205A206178697320205F -:1023F00000436865636B696E67205A206178697372 -:102400002020004B6F6E74726F6C612059206178D0 -:102410006973202000436865636B696E67205920EB -:10242000617869732020004B6F6E74726F6C61204D -:10243000582061786973202000436865636B696E7A -:1024400067205820617869732020004B6F6E74728A -:102450006F6C6120686F74656E642020004368654E -:10246000636B696E6720686F74656E642020004B33 -:102470006F6E74726F6C612073656E7A6F72750027 -:10248000436865636B696E672073656E736F727303 -:1024900020004B6F6E74726F6C6120656E64737494 -:1024A0006F707300436865636B696E6720656E6467 -:1024B00073746F7073004B6F6E74726F6C61206217 -:1024C0006564202020202000436865636B696E6787 -:1024D00020626564202020202000567365204F4B29 -:1024E000202020202020202020202000416C6C2053 -:1024F000636F727265637420202020202000426583 -:1025000064202F204865617465720044656C6B61BE -:10251000206F73790041786973206C656E67746809 -:10252000004F736100417869730053656C66746590 -:102530007374202020202020202020005250692069 -:10254000706F7274202020205B7A61705D005250A1 -:102550006920706F727420202020205B6F6E5D00F8 -:1025600052506920706F7274202020205B76797041 -:102570005D0052506920706F7274202020205B6FC4 -:1025800066665D0057726974696E6720746F2066B5 -:10259000696C653A2000766F6C756D652E696E69A1 -:1025A00074206661696C6564002053697A653A201D -:1025B000004B617274612076796A6D7574610043B5 -:1025C0006172642072656D6F76656400534420709B -:1025D00072696E74696E67206279746520006F702D -:1025E000656E206661696C65642C2046696C653A8D -:1025F00020006F70656E526F6F74206661696C6544 -:1026000064004B6172746120766C6F7A656E610054 -:102610004361726420696E7365727465640053442B -:1026200020696E6974206661696C0046696C65207A -:1026300073656C65637465640046696C65206F70D2 -:10264000656E65643A20006572726F7220777269F8 -:1026500074696E6720746F2066696C65005344204E -:1026600063617264206F6B0043616E6E6F742065EE -:102670006E746572207375626469723A20005072DC -:102680006176793A0052696768743A004F626E6FFA -:10269000766F76616E69207469736B75005265732D -:1026A000756D696E67207072696E74004F626E6F2F -:1026B00076656E69207469736B7500526573756D0C -:1026C000696E67207072696E7400506F6B7261631F -:1026D0006F76617400526573756D65207072696EF6 -:1026E0007400526573656E643A20004F64737472AF -:1026F000616E7465207469736B6F767920706C619C -:1027000074207A20686561746265642070726F73EA -:10271000696D2E00506C656173652072656D6F7612 -:102720006520737465656C207368656574206672D6 -:102730006F6D20686561746265642E004465746520 -:102740006B6F76616E207679706164656B20707254 -:102750006F7564752E4F626E6F766974207469733D -:102760006B3F00426C61636B6F7574206F636375C0 -:10277000727265642E205265636F76657220707286 -:10278000696E743F004F626E6F766F76616E69207E -:102790007469736B7520202020005265636F766525 -:1027A00072696E67207072696E7420202020006844 -:1027B0006F77746F2E707275736133642E637A0055 -:1027C000686F77746F2E707275736133642E636FE8 -:1027D0006D00666F72756D2E707275736133642E45 -:1027E000637A00666F72756D2E70727573613364F3 -:1027F0002E636F6D00707275736133642E637A009F -:10280000707275736133642E636F6D005469736BFE -:1028100020706F7A6173746176656E005072696EB4 -:102820007420706175736564005469736B207072F5 -:1028300065727573656E005072696E742061626FA7 -:1028400072746564005072696E7465722064697395 -:10285000636F6E6E65637465640050726F20767985 -:1028600073756E7574692066696C616D656E7475DB -:1028700020737469736B6E6574652070726F736911 -:102880006D20746C616369746B6F00506C6561736B -:102890006520707265737320746865206B6E6F625B -:1028A00020746F20756E6C6F61642066696C616D59 -:1028B000656E74006120737469736B6E6574652056 -:1028C000746C616369746B6F00616E642070726513 -:1028D000737320746865206B6E6F6200507265645C -:1028E000656872656A746520747279736B7521000E -:1028F0005072656865617420746865206E6F7A7ABD -:102900006C6521005072656465687265760050726E -:10291000656865617400506F77657255700050721C -:102920006F73696D2063656B656A746500506C65D3 -:102930006173652077616974004E656A64726976B7 -:1029400065207A61766564746520504C4120666923 -:102950006C616D656E742070726F73696D2E0050BE -:102960006C65617365206C6F616420504C4120661A -:10297000696C616D656E742066697273742E004AAD -:102980006520504C412066696C616D656E74207ADB -:1029900061766564656E3F00497320504C41206646 -:1029A000696C616D656E74206C6F616465643F0075 -:1029B0002020506C616E6E6572427566666572426B -:1029C000797465733A2000556D6973746574652078 -:1029D00070726F73696D207469736B6F7679207094 -:1029E0006C6174206E61206865617462656400507A -:1029F0006C6561736520706C6163652073746565D7 -:102A00006C207368656574206F6E20686561746200 -:102A100065642E004E6168726976616E6920504966 -:102A20004E44410050494E44412048656174696EEE -:102A30006700504944206B616C2E2020202020200C -:102A40002020202020005049442063616C2E20204B -:102A500020202020202020202000504944206B618D -:102A60006C2E20756B6F6E63656E6100504944205B -:102A700063616C2E2066696E6973686564005049F5 -:102A800044206B616C696272616365005049442047 -:102A900063616C6962726174696F6E00506F7A6114 -:102AA000737461766974207469736B005061757317 -:102AB00065207072696E7400556D69737465746514 -:102AC000206C69737420706170697275206E61206A -:102AD000706F646C6F7A6B752061207564727A75A3 -:102AE0006A7465206A656A20706F642074727973F5 -:102AF0006B6F7520626568656D206D6572656E69C6 -:102B0000207072766E696368203420626F64752E5F -:102B100020506F6B756420747279736B61207A61D9 -:102B200063687974692070617069722C207679709D -:102B30006E657465207469736B61726E752E0050DA -:102B40006C6163652061207368656574206F662021 -:102B5000706170657220756E64657220746865209E -:102B60006E6F7A7A6C6520647572696E672074681E -:102B7000652063616C6962726174696F6E206F6653 -:102B8000206669727374203420706F696E74732EBE -:102B900020496620746865206E6F7A7A6C652063C0 -:102BA0006174636865732074686520706170657214 -:102BB0002C20706F776572206F66662074686520C0 -:102BC0007072696E74657220696D6D656469617497 -:102BD000656C792E006F6B004F6666004E6F206D3E -:102BE0006F76652E005A61646E61205344206B61DC -:102BF000727461004E6F205344206361726400540C -:102C00007279736B61004E6F7A7A6C650046696CFD -:102C1000616D656E74206E657A61766564656E00BF -:102C200046696C616D656E74206E6F74206C6F61A7 -:102C3000646564004261727661206E656E6920632E -:102C40006973746100436F6C6F72206E6F742063E0 -:102C50006F7272656374004E65004E6F0050726F44 -:102C600073696D20616B7475616C697A756A7465DE -:102C70002E00506C656173652075706772616465C4 -:102C80002E005679736C61206E6F766120766572C6 -:102C90007A65206669726D776172653A004E657774 -:102CA000206669726D776172652076657273696FEF -:102CB0006E20617661696C61626C653A00506F7379 -:102CC000756E6F7574205A004D6F7665205A0050EE -:102CD0006F73756E6F75742059004D6F766520594E -:102CE00000506F73756E6F75742058004D6F766568 -:102CF000205800457874727564657200506F737562 -:102D00006E6F7574206F7375004D6F7665206178F6 -:102D10006973004D65736820426564204C65766573 -:102D20006C696E67004E617065746900566F6C74F3 -:102D300061676573005465706C6F74790054656DDC -:102D4000706572617475726573004B616C69627253 -:102D50006163650043616C6962726174696F6E00E2 -:102D6000537461762072656D656E750042656C7492 -:102D70002073746174757300207A203900206F66A7 -:102D80002039004D6572696D207265666572656EE9 -:102D9000636E69207679736B75206B616C69627202 -:102DA00061636E69686F20626F6475004D65617361 -:102DB0007572696E67207265666572656E636520FF -:102DC000686569676874206F662063616C69627208 -:102DD0006174696F6E20706F696E74004D65726505 -:102DE0006E65207A6B6F73656E693A004D6561732D -:102DF0007572656420736B65773A00486C61766E16 -:102E000069206E616269646B61004D61696E004D9D -:102E100032323120496E76616C6964206578747253 -:102E20007564657220004D32313820496E76616CD0 -:102E3000696420657874727564657220004D323063 -:102E40003020496E76616C696420657874727564AF -:102E5000657220005265706F7274696E6720656ECE -:102E60006473746F7020737461747573004D3131C5 -:102E700037204B616C2E207072766E6920767273EB -:102E8000747679004D313137204669727374206C45 -:102E9000617965722063616C2E004649524D57413D -:102EA00052455F4E414D453A4D61726C696E2056F8 -:102EB000312E302E323B20537072696E7465722F42 -:102EC0006772626C206D617368757020666F722026 -:102ED00067656E36204649524D574152455F5552FF -:102EE0004C3A68747470733A2F2F6769746875620E -:102EF0002E636F6D2F707275736133642F5072750E -:102F000073612D69332D506C75732F2050524F54BF -:102F10004F434F4C5F56455253494F4E3A312E3036 -:102F2000204D414348494E455F545950453A5072EF -:102F3000757361206933204D4B33204558545255E9 -:102F40004445525F434F554E543A312055554944FC -:102F50003A30303030303030302D303030302D306D -:102F60003030302D303030302D3030303030303067 -:102F700030303030300A004D31303920496E7661C2 -:102F80006C696420657874727564657220004D31D7 -:102F9000303520496E76616C69642065787472758D -:102FA00064657220004D31303420496E76616C6961 -:102FB00064206578747275646572200055766F6C54 -:102FC0006E656E612072656D656E69636B61004C44 -:102FD0006F6F73652070756C6C6579005A617665EA -:102FE00073742066696C616D656E74004C6F61640A -:102FF0002066696C616D656E74005A617661646506 -:103000006E692066696C616D656E7475004C6F61E8 -:1030100064696E672066696C616D656E74004369F2 -:103020007374656E69206261727679004C6F6164B9 -:10303000696E6720636F6C6F72004C6576793A0039 -:103040004C6566743A005679626572206A617A79D5 -:103050006B610053656C656374206C616E677561AC -:1030600067650043657374696E6100456E676C69DE -:103070007368004B494C4C45442E2000496E7661E4 -:103080006C696420657874727564657200566C6F43 -:103090007A74652066696C616D656E7400496E7343 -:1030A0006572742066696C616D656E740054697335 -:1030B0006B2E2076656E743A005072696E742046ED -:1030C000414E3A2000547279736B2E2076656E74EF -:1030D0003A004E6F7A7A6C652046414E3A00457848 -:1030E00074727564657220696E666F00207A203490 -:1030F00000206F662034005A6C657073756A692011 -:10310000707265736E6F7374206B616C696272614B -:10311000636E69686F20626F647500496D70726FCD -:1031200076696E67206265642063616C69627261B2 -:1031300074696F6E20706F696E74004B616C6962A8 -:1031400072756A69205A0043616C696272617469C0 -:103150006E67205A004B616C696272616365204F33 -:103160004B0043616C6962726174696F6E20646FB9 -:103170006E65004B616C6962726F766174205A00F3 -:1031800043616C696272617465205A005A616872A9 -:103190006976616E69204F4B2E0048656174696ED7 -:1031A0006720646F6E652E005A6168726976616E81 -:1031B000690048656174696E670043485942413A45 -:1031C0002046696C616D656E742073656E7A6F72EE -:1031D000206E6572656167756A652C207A6B6F6E0B -:1031E00074726F6C756A7465207A61706F6A656E4F -:1031F000692E004552524F523A2046696C616D6506 -:103200006E742073656E736F72206973206E6F74B5 -:1032100020726573706F6E64696E672C20706C65C8 -:1032200061736520636865636B20636F6E6E6563B1 -:1032300074696F6E2E00462E206175746F7A617608 -:103240002E205B7A61705D00462E206175746F6C74 -:103250006F616420205B6F6E5D00462E2061757487 -:103260006F7A61762E205B7679705D00462E206144 -:1032700075746F6C6F6164205B6F66665D00462ECF -:10328000206175746F7A61762E205B4E2F415D0050 -:10329000462E206175746F6C6F6164205B4E2F4108 -:1032A0005D0046696C2E2073656E7A6F72205B7AC2 -:1032B00061705D0046696C2E2073656E736F7220BD -:1032C000205B6F6E5D0046696C2E2073656E7A6FB1 -:1032D00072205B7679705D0046696C2E2073656E96 -:1032E000736F72205B6F66665D0046696C2E20739B -:1032F000656E7A6F72205B4E2F415D0046696C2EC1 -:103300002073656E736F72205B4E2F415D00204607 -:10331000726565204D656D6F72793A20005469734E -:103320006B61726E61206E6562796C61206A657393 -:103330007465207A6B616C6962726F76616E612E62 -:1033400020506F73747570756A74652070726F7336 -:10335000696D20706F646C65206D616E75616C7550 -:103360002C206B617069746F6C61205A6163696EA7 -:10337000616D652C206F6473746176656320506F96 -:1033800073747570206B616C6962726163652E0085 -:103390005072696E74657220686173206E6F74205C -:1033A0006265656E2063616C696272617465642038 -:1033B0007965742E20506C6561736520666F6C6C46 -:1033C0006F7720746865206D616E75616C2C206369 -:1033D00068617074657220466972737420737465D5 -:1033E00070732C2073656374696F6E2043616C6920 -:1033F00062726174696F6E20666C6F772E00507216 -:1034000075746F6B00466C6F7700446F6B6F6E6303 -:103410006F76616E6920706F687962750046696EBB -:10342000697368696E67206D6F76656D656E74731C -:1034300000207A203400206F66203400486C6564D8 -:10344000616D206B616C69627261636E6920626F8D -:103450006420706F646C6F7A6B790053656172637E -:1034600068696E67206265642063616C696272617D -:1034700074696F6E20706F696E7400497465726153 -:1034800063652000497465726174696F6E20004441 -:103490006F6E6520736176696E672066696C652E54 -:1034A00000446F6E65207072696E74696E67206685 -:1034B000696C6500536F75626F72206E656B6F6D1E -:1034C000706C65746E692E20506F6B7261636F76DD -:1034D00061743F0046696C6520696E636F6D706C46 -:1034E0006574652E20436F6E74696E756520616E1C -:1034F000797761793F004E656B7465726520736FF3 -:1035000075626F7279206E656275646F7520736580 -:1035100074726964656E792E204D6178696D616C95 -:103520006E6920706F63657420736F75626F72755A -:103530002070726F20736574726964656E69206AA9 -:1035400065203130302E00536F6D652066696C65E3 -:10355000732077696C6C206E6F7420626520736FC6 -:10356000727465642E204D61782E204E6F2E206F70 -:10357000662066696C657320696E203120666F6C09 -:1035800064657220666F7220736F7274696E672053 -:103590006973203130302E0053656E7A6F72206669 -:1035A000696C616D656E74750046696C616D656E00 -:1035B000742073656E736F720046696C616D656E21 -:1035C00074207679746C6163656E2061207370720B -:1035D00061766E652062617276793F0046696C6142 -:1035E0006D656E7420657874727564696E672026E7 -:1035F000207769746820636F727265637420636FEB -:103600006C6F723F0056796D656E69742066696CE7 -:10361000616D656E74004368616E67652066696CF4 -:10362000616D656E7400527963686C6F7374207697 -:10363000656E742E0046616E207370656564004B84 -:103640006F6E74722E2076656E742E5B7A61705D7B -:103650000046616E7320636865636B2020205B6F9A -:103660006E5D004B6F6E74722E2076656E742E5BED -:103670007679705D0046616E7320636865636B20C8 -:10368000205B6F66665D00656E717565696E6720AB -:1036900022004578747275646572002045787465FF -:1036A000726E616C205265736574005072696E743D -:1036B00065722073746F7070656420647565207422 -:1036C0006F206572726F72732E204669782074685D -:1036D00065206572726F7220616E6420757365205B -:1036E0004D39393920746F20726573746172742E8C -:1036F000202854656D7065726174757265206973F8 -:103700002072657365742E2053657420697420617E -:10371000667465722072657374617274696E67296C -:10372000004E6F204C696E65204E756D626572208B -:103730007769746820636865636B73756D2C204CC2 -:10374000617374204C696E653A20004E6F204368A7 -:1037500065636B73756D2077697468206C696E653D -:10376000206E756D6265722C204C617374204C69FB -:103770006E653A200020746F6F206C6F6E67206555 -:103780007874727573696F6E2070726576656E7489 -:103790006564004C696E65204E756D6265722069C6 -:1037A00073206E6F74204C617374204C696E6520B9 -:1037B0004E756D6265722B312C204C617374204CF8 -:1037C000696E653A20005072696E74657220686196 -:1037D0006C7465642E206B696C6C28292063616CA5 -:1037E0006C6564210020636F6C6420657874727569 -:1037F00073696F6E2070726576656E7465640063C0 -:103800006865636B73756D206D69736D6174636852 -:103810002C204C617374204C696E653A200043483B -:103820005942413A004552524F523A00456E642087 -:1038300066696C65206C697374006F70656E005406 -:10384000524947474552454400656E6473746F7032 -:1038500073206869743A2000536C6565702E2E2EB3 -:10386000005679706E6F7574206D6F746F72790089 -:1038700044697361626C65207374657070657273FE -:1038800000446174756D3A00446174653A00506F8C -:10389000757A6520616B7475616C6E690043757231 -:1038A00072656E7400504F5A4F523A2043726173E2 -:1038B0006820646574656B6365206465616B746919 -:1038C000766F76616E6120766520537465616C74E5 -:1038D00068206D6F6475005741524E494E473A203B -:1038E000437261736820646574656374696F6E20E8 -:1038F00064697361626C656420696E2053746561EC -:103900006C7468206D6F6465004372617368206435 -:103910006574656B6365206D757A652062797420C6 -:103920007A61706E75746120706F757A652076208B -:103930004E6F726D616C206D6F64750043726173C0 -:103940006820646574656374696F6E2063616E20BE -:103950006265207475726E6564206F6E206F6E6C88 -:103960007920696E204E6F726D616C206D6F646599 -:103970002E004372617368206465742E20205B7A88 -:1039800061705D004372617368206465742E20204D -:10399000205B6F6E5D004372617368206465742EF6 -:1039A00020205B7679705D004372617368206465E6 -:1039B000742E20205B6F66665D0043726173682021 -:1039C0006465742E20205B4E2F415D0020436F758F -:1039D0006E7420583A200056796D656E61206F6BC9 -:1039E0003F004368616E67656420636F7272656350 -:1039F000746C793F005A63686C6164697400436F4A -:103A00006F6C646F776E0050726F207573706573A2 -:103A10006E6F75206B616C696272616369206F63A0 -:103A20006973746574652070726F73696D20746951 -:103A3000736B6F766F7520747279736B752E20506F -:103A40006F74767264746520746C616369746B65FD -:103A50006D2E00506C6561736520636C65616E202E -:103A6000746865206E6F7A7A6C6520666F72206369 -:103A7000616C6962726174696F6E2E20436C696358 -:103A80006B207768656E20646F6E652E00204C6138 -:103A9000737420557064617465643A2000567962CD -:103AA000657274652065787472756465723A004356 -:103AB000686F6F73652065787472756465723A001B -:103AC0005A6D656E612075737065736E6121004378 -:103AD00068616E6765207375636365737321005455 -:103AE00069736B207A205344005072696E742066AB -:103AF000726F6D205344005465706C6F742E206B90 -:103B0000616C6962726163650054656D702E20633B -:103B1000616C6962726174696F6E004B616C69629D -:103B200072756A69205A0043616C696272617469D6 -:103B30006E67205A005A6B616C6962726F766174AD -:103B40000043616C696272617465005265736574EB -:103B50002058595A206B616C6962722E005265734D -:103B600065742058595A2063616C6962722E004B4B -:103B7000616C6962726163652058595A0043616CD7 -:103B80006962726174652058595A002042726F77D9 -:103B90006E206F75742052657365740042656769A5 -:103BA0006E2066696C65206C697374004B616C698A -:103BB00062726163652058595A206E657072657330 -:103BC0006E612E204C65767920707265646E692076 -:103BD000626F64206D6F63207670726564752E006D -:103BE00058595A2063616C6962726174696F6E2002 -:103BF000636F6D70726F6D697365642E204C6566BE -:103C0000742066726F6E742063616C696272617495 -:103C1000696F6E20706F696E74206E6F74207265AC -:103C200061636861626C652E004B616C69627261F0 -:103C300063652058595A206E65707265736E612EE7 -:103C400020507265646E69206B616C696272616399 -:103C50006E6920626F6479206D6F63207670726583 -:103C600064752E0058595A2063616C6962726174E0 -:103C7000696F6E20636F6D70726F6D697365642E0E -:103C80002046726F6E742063616C69627261746940 -:103C90006F6E20706F696E7473206E6F7420726522 -:103CA00061636861626C652E004B616C6962726170 -:103CB00063652058595A207620706F7261646B7565 -:103CC0002E20582F59206F7379206D69726E6520F0 -:103CD0007A6B6F73656E652E20446F62726120701F -:103CE00072616365210058595A2063616C69627280 -:103CF0006174696F6E20616C6C2072696768742EE4 -:103D000020582F5920617865732061726520736C8B -:103D1000696768746C7920736B657765642E2047DA -:103D20006F6F64206A6F6221004B616C696272611F -:103D300063652058595A207620706F7261646B75E4 -:103D40002E205A6B6F73656E692062756465206101 -:103D500075746F6D617469636B79207679726F76B3 -:103D60006E616E6F20707269207469736B752E00BE -:103D700058595A2063616C6962726174696F6E2070 -:103D8000616C6C2072696768742E20536B657720B4 -:103D900077696C6C20626520636F7272656374650D -:103DA00064206175746F6D61746963616C6C792EE8 -:103DB000004B616C6962726163652058595A2073C7 -:103DC000656C68616C612E204B616C696272616325 -:103DD0006E6920626F6420706F646C6F7A6B7920FB -:103DE0006E656E616C657A656E2E0058595A206357 -:103DF000616C6962726174696F6E206661696C657D -:103E0000642E204265642063616C6962726174692A -:103E10006F6E20706F696E7420776173206E6F749F -:103E200020666F756E642E004B616C69627261630F -:103E3000652058595A207620706F7261646B752E18 -:103E400020582F59206F7379206A736F75206B6F1C -:103E50006C6D652E2047726174756C756A692100FE -:103E600058595A2063616C6962726174696F6E207F -:103E70006F6B2E20582F5920617865732061726511 -:103E80002070657270656E646963756C61722E2056 -:103E9000436F6E67726174756C6174696F6E7321C4 -:103EA000004B616C6962726163652058595A2073D6 -:103EB000656C68616C612E204E61686C65646E652E -:103EC000746520646F206D616E75616C752E00588D -:103ED000595A2063616C6962726174696F6E206601 -:103EE00061696C65642E20506C6561736520636F39 -:103EF0006E73756C7420746865206D616E75616C8D -:103F00002E004B616C6962726163652058595A20BA -:103F100073656C68616C612E204C657679207072D7 -:103F200065646E6920626F64206D6F6320767072C5 -:103F30006564752E2053726F766E656A74652074A1 -:103F400069736B61726E752E0058595A2063616CEB -:103F50006962726174696F6E206661696C65642E56 -:103F6000204C6566742066726F6E742063616C69A4 -:103F700062726174696F6E20706F696E74206E6F0B -:103F80007420726561636861626C652E004B616CC0 -:103F90006962726163652058595A2073656C686163 -:103FA0006C612E20507265646E69206B616C696271 -:103FB0007261636E6920626F6479206D6F63207631 -:103FC00070726564752E2053726F766E656A7465C3 -:103FD000207469736B61726E752E0058595A206394 -:103FE000616C6962726174696F6E206661696C658B -:103FF000642E2046726F6E742063616C6962726118 -:1040000074696F6E20706F696E7473206E6F7420A8 -:10401000726561636861626C652E004B616C6962F8 -:1040200072616365205A2073656C68616C612E2033 -:1040300053656E736F72206A65206F64706F6A6576 -:104040006E79206E65626F20707265727573656E31 -:1040500079206B6162656C2E2043656B616D206E0B -:10406000612072657365742E00426564206C65760C -:10407000656C696E67206661696C65642E205365A6 -:104080006E736F7220646973636F6E6E65637465BF -:1040900064206F72206361626C652062726F6B6571 -:1040A0006E2E2057616974696E6720666F72207288 -:1040B000657365742E004B616C6962726163652083 -:1040C0005A2073656C68616C612E2053656E736F46 -:1040D00072206E657365706E756C2E205A6E656306 -:1040E000697374656E6120747279736B613F2043EC -:1040F000656B616D206E612072657365742E004280 -:104100006564206C6576656C696E67206661696CB4 -:1041100065642E2053656E736F72206469646E74DB -:1041200020747269676765722E20446562726973D4 -:10413000206F6E206E6F7A7A6C653F2057616974CC -:10414000696E6720666F722072657365742E004B0E -:10415000616C696272616365205A2073656C686185 -:104160006C612E2053656E736F72207365706E756F -:104170006C207072696C6973207679736F6B6F2E27 -:104180002043656B616D206E612072657365742ECE -:1041900000426564206C6576656C696E67206661B7 -:1041A000696C65642E2053656E736F72207472693A -:1041B00067676572656420746F6F20686967682E31 -:1041C0002057616974696E6720666F72207265732B -:1041D00065742E005A6168726976616E6920626545 -:1041E00064004265642048656174696E67004265D9 -:1041F00064204F4B2E0042656420646F6E6500564C -:10420000707261766F205B756D5D005269676874CE -:1042100020736964655B756D5D005265736574003C -:10422000567A61647520205B756D5D005265617220 -:104230002073696465205B756D5D004B6F72656B03 -:10424000636520706F646C6F7A6B790042656420DF -:104250006C6576656C20636F727265637400566C72 -:1042600065766F20205B756D5D004C65667420730C -:10427000696465205B756D5D0056707265647520BC -:104280005B756D5D0046726F6E7420736964655B6B -:10429000756D5D00426564004E656E69207A6B61E4 -:1042A0006C6962726F76616E6120767A64616C65AA -:1042B0006E6F737420747279736B79206F642074DD -:1042C00069736B6F766520706F646C6F7A6B792E93 -:1042D00020506F73747570756A74652070726F7397 -:1042E000696D20706F646C65206D616E75616C75B1 -:1042F0002C206B617069746F6C61205A6163696E08 -:10430000616D652C206F64737461766563204E6106 -:1043100073746176656E69207072766E692076724C -:10432000737476792E0044697374616E63652062DC -:1043300065747765656E20746970206F6620746897 -:1043400065206E6F7A7A6C6520616E642074686592 -:1043500020626564207375726661636520686173AD -:10436000206E6F74206265656E20736574207965B8 -:10437000742E20506C6561736520666F6C6C6F776E -:1043800020746865206D616E75616C2C20636861B6 -:1043900070746572204669727374207374657073EB -:1043A0002C2073656374696F6E2046697273742084 -:1043B0006C617965722063616C6962726174696FA6 -:1043C0006E2E00446F6C6164656E69206F73792096 -:1043D0005A004C6976652061646A757374205A00CE -:1043E00041646A757374696E67205A004175746F11 -:1043F00020686F6D65004175746F5A6176656465FC -:104400006E692066696C2E004175746F4C6F616433 -:104410002066696C616D656E74004175746F6D61C5 -:104420007469636B65207A61766164656E69206684 -:10443000696C616D656E747520646F737475706EF0 -:104440006520706F757A6520707269207A61706E70 -:104450007574656D2066696C616D656E7420736539 -:104460006E7A6F72752E2E2E004175746F6C6F61AF -:1044700064696E672066696C616D656E7420617633 -:1044800061696C61626C65206F6E6C79207768651C -:104490006E2066696C616D656E742073656E736FF6 -:1044A00072206973207475726E6564206F6E2E2E93 -:1044B0002E004175746F6D617469636B65207A615C -:1044C000766164656E692066696C616D656E747590 -:1044D00020616B7469766E692C20737469736B6EDE -:1044E00065746520746C616369746B6F20612076FC -:1044F0006C6F7A74652066696C616D656E742E2EC2 -:104500002E004175746F6C6F6164696E6720666917 -:104510006C616D656E742069732061637469766582 -:104520002C206A75737420707265737320746865CB -:10453000206B6E6F6220616E6420696E73657274A9 -:104540002066696C616D656E742E2E2E00207C20B5 -:10455000417574686F723A200056736500416C6C47 -:10456000004163746976652045787472756465727C -:104570003A2000B412A412C812D012D812E112E9E3 -:10458000120613F1121F131B1323132B134413339F -:10459000136F135513C5138D1323140314A7144657 -:1045A00014B5150A15AC1669165217F9160518999F -:1045B00017B01864184419011995198119031AA91B -:1045C000199A1A4B1A081BE41A3D1B281B601B5131 -:1045D0001BAB1B7D1B361CD91B961C9D1CB71CAD31 -:1045E0001CEB1CC31C201D0E1D311D561D421D85BC -:1045F0001D681DB11DA01DD31DC11DE61DFF1DF9A8 -:104600001D041E161E3A1E281E5E1E4C1EAB1E707A -:104610001EF81EE31E151F0D1F291F211F3F1F31EE -:104620001F4A1F541F841F681FAD1F9F1FD21FC02A -:104630001FF11FE31F0C20FF1F2A201D20602037C1 -:104640002094208B20AC209A20D020BE20F420E2A1 -:104650002016210621242143213421622150218664 -:10466000217421A9219821C721B821E621D4210153 -:1046700022F72119220A2230222622382259224AE0 -:10468000227322642282229E228F22AC22B222D660 -:1046900022C422F922E7221A230923352323235394 -:1046A0002347237623612387239823A823B123CE8E -:1046B00023B923F123DF2315240324392427245D80 -:1046C000244B2480246F24A4249224C824B624ECF0 -:1046D00024DA24FE2415250B25252521252A254EFF -:1046E000253C257225602584259625A925BF25B161 -:1046F00025CC25DE25F225102602261E262B26395E -:104700002647265D26682685267E269D268C26BB86 -:1047100026AC26D526CA26E2261427EB2663273C9C -:10472000279A278527C027AF27E327D2270028F518 -:10473000271C280C283728292845288B285A28C9BF -:1047400028B428F028DC280E29042916292D291E32 -:10475000295F29392998297F29B029EF29C72924D8 -:104760002A142A462A322A6C2A5A2A8C2A7E2AACF1 -:104770002A9C2A3F2BB82AD52BD82BDC2BF42BE5EF -:104780002B062CFF2B202C0D2C452C342C5A2C576F -:104790002C722C5D2C9D2C822CC82CBD2CDA2CCF9D -:1047A0002CEC2CE12CF32C092DFC2C132D2C2D257D -:1047B0002D3D2D352D542D4A2D6C2D602D7D2D78C0 -:1047C0002DAC2D832DEC2DDC2D0A2EFB2D0F2E264E -:1047D0002E3D2E542E842E6D2E9A2E772F8E2FA5A1 -:1047E0002FCF2FBC2FEC2FDC2F0D30FA2F2C301EAB -:1047F0003040303A30533046306B30633073307C69 -:10480000309D308D30B930AD30D230C530DE30F132 -:1048100030EC301B31F73047313B3162315531805C -:104820003173319A318C31B231A831F331BA314818 -:104830003236326C325A3290327E32B432A232D8B0 -:1048400032C632FC32EA320E3390331D330534FE69 -:10485000331D340A34363431345B343C3484347B95 -:10486000348F34A134D434B4344735F634A9359870 -:1048700035DC35B935163605363536263651363FF0 -:104880003675366336873692369B36AB3621374BD4 -:104890003775379337C637E537FF3725381E382C3D -:1048A000383A383F38493858387038613888388154 -:1048B000389D388E38D738A5383C39093984397253 -:1048C00039A8399639BA39CC39E239D739FE39F5B0 -:1048D00039533A073A8D3AAF3A9D3ACF3AC03AE95E -:1048E0003ADF3A093BF73A273B1B3B413B353B5DFF -:1048F0003B4B3B7D3B6F3B8B3B9C3BE03BAC3B6492 -:104900003C293CE63CA93C703D293DEB3DB13D6076 -:104910003E283ECF3EA13E493F023FDB3F8D3F69EF -:10492000401B40FF40B64091414F41E241D441F627 -:1049300041EE410B42FF411A422C4220424C423B85 -:10494000426A425E4285427942944226439842D26C -:1049500043C343E043EC430844F64369441A44022A -:1049600045B2444D455D4559456145457872656D93 -:1049700065207370616E206F6620746865205A2010 -:1049800076616C756573210043616C63756C61744D -:10499000696F6E206F6620746865206D6163686959 -:1049A0006E6520736B657720616E64206F66667339 -:1049B0006574206661696C65642E00203C20005798 -:1049C00041524E494E473A2046726F6E7420706FC6 -:1049D000696E74206E6F7420726561636861626CC9 -:1049E000652E205920636F6F7264696E6174653A39 -:1049F0000000497465726174696F6E3A20000000AE -:104A00004041FFFFBF4000005C43FFFFBF4000008C -:104A10005C43000046430000404100004643000064 -:104A20004041FFFFBF400000E442FFFFBF400000E5 -:104A30005743FFFFBF40000057430000CC42000037 -:104A4000E4420000CC42000040410000CC420000A3 -:104A50004041000046430000E4420000464300009D -:104A60005743000046435A00205A3A005900205943 -:104A70003A00580020583A0024F4D43050C38E2015 -:104A8000C2A24017828B7011127A910D816CD90AE3 -:104A9000A861E108C7586607615143061E4B5D05D2 -:104AA000C145A7041A411104093D98037139310326 -:104AB0004036DB0265339102D4305402802E1D0251 -:104AC000632CEE01752AC501B028A00110278101D1 -:104AD0008F2564012B244B01E0223401AC211F01FE -:104AE0008D200D01801FFC00841EED00971DDF004E -:104AF000B81CD200E61BC600201BBC00641AB20022 -:104B0000B219A8000A19A0006A189900D1179100DB -:104B100040178B00B516840031167E00B31579005E -:104B20003A157300C7146F0058146A00EE1366003C -:104B30008813630025135E00C7125B006C125700D8 -:104B400015125400C111510070114F0021114B007A -:104B5000D61049008D104700461044000210420054 -:104B6000C00F4000800F3E00420F3C00060F3B008C -:104B7000CB0E3800930E37005C0E3500270E340044 -:104B8000F30D3200C10D3100900D3000600D2E008C -:104B9000320D2D00050D2C00D90C2B00AE0C290078 -:104BA000850C29005C0C2700350C27000E0C260014 -:104BB000E80B2400C40B2400A00B23007D0B230072 -:104BC0005A0B2100390B2100180B2000F80A1F0096 -:104BD000D90A1E00BB0A1E009D0A1D00800A1D0086 -:104BE000630A1C00470A1B002C0A1B00110A1A004A -:104BF000F7091A00DD091900C4091900AB091900E9 -:104C0000920917007B091800630917004C09160068 -:104C100036091600200916000A091500F5081500C6 -:104C2000E0081400CC081400B8081400A40814000C -:104C3000900813007D0812006B081300580812003A -:104C40004608120034081100230811001208110050 -:104C500001081100F0071000E0071000D007100055 -:104C6000C0071000B0070F00A107100091070E0049 -:104C700083070F0074070F0065070E0057070E002B -:104C800049070E003B070D002E070E0020070D0000 -:104C900013070D0006070D00F9060C00ED060D00C8 -:104CA000E0060C00D4060C00C8060C00BC060C0084 -:104CB000B0060C00A4060B0099060C008D060B0034 -:104CC00082060B0077060B006C060B0061060A00DB -:104CD00057060B004C060A0042060A0038060A0076 -:104CE0002E060A0024060A001A060A001006090009 -:104CF00007060A00FD050900F4050900EB05090097 -:104D0000E2050900D9050900D0050900C705090019 -:104D1000BE050900B5050800AD050800A505090098 -:104D20009C050800940508008C050800840508000F -:104D30007C050800740508006C050700650508007F -:104D40005D050700560508004E05070047050700EA -:104D50004005080038050700310507002A0507004F -:104D6000230507001C050600160507000F050700B0 -:104D70000805060002050700FB040600F50407000D -:104D8000EE040600E8040600E2040700DB04060067 -:104D9000D5040600CF040600C9040600C3040600BB -:104DA000BD040600B7040600B1040500AC0406000B -:104DB000A6040600A00405009B0406009504050057 -:104DC000900406008A04050085040500800406009E -:104DD0007A04050075040500700405006B040500E5 -:104DE00066040500610405005C0405005704050025 -:104DF000520405004D040500480405004304050065 -:104E00003E0404003A0405003504050030040400A3 -:104E10002C04050027040400230405001E040400DC -:104E20001A04040016040500110404000D04040013 -:104E3000090405000404040000040400FC03040049 -:104E4000F8030400F4030400F0030400EC0304007E -:104E5000E8030400E4030400E0030400DC030400AE -:104E6000D8030400D4030400D0030400CC030400DE -:104E7000C8030300C503030024F404D9201BC40C99 -:104E80005C0E9804C4095F0265077101F405F9001E -:104E9000FB04B30048048700C103690058035500B0 -:104EA00003034500BE023A008402310053022A0087 -:104EB0002902250004022000E4011C00C801190099 -:104EC000AF01170098011400840113007101100054 -:104ED0006101100051010E0043010D0036010B006D -:104EE0002B010B0020010B00150109000C0109002A -:104EF00003010800FB000800F3000800EB000700B6 -:104F0000E4000600DE000600D8000600D20006001D -:104F1000CC000500C7000500C2000500BD0004006C -:104F2000B9000400B5000400B1000400AD000400A5 -:104F3000A9000400A5000300A20003009F000400D4 -:104F40009B000300980003009500020093000300FB -:104F5000900003008D0002008B0003008800020017 -:104F60008600020084000300810002007F0002002E -:104F70007D0002007B000200790002007700010042 -:104F8000760002007400020072000100710002004D -:104F90006F0002006D0001006C0002006A00010059 -:104FA0006900020067000100660001006500010061 -:104FB0006400020062000100610001006000010065 -:104FC0005F0002005D0001005C0001005B00010069 -:104FD0005A0001005900010058000100570001006B -:104FE000560001005500010054000100530000006C -:104FF0005300010052000100510001005000010067 -:105000004F0001004E0000004E0001004D00010065 -:105010004C0001004B0000004B0001004A00010061 -:10502000490001004800000048000100470001005D -:105030004600000046000100450000004500010058 -:105040004400010043000000430001004200000052 -:105050004200010041000000410001004000010049 -:105060003F0000003F0001003E0000003E00010044 -:105070003D0000003D0001003C0000003C0000003D -:105080003C0001003B0000003B0001003A00000032 -:105090003A0001003900000039000100380000002A -:1050A0003800000038000100370000003700010020 -:1050B0003600000036000000360001003500000018 -:1050C000350000003500010034000000340000000D -:1050D0003400010033000000330000003300010001 -:1050E00032000000320000003200010031000000F8 -:1050F00031000000310001003000000030000000ED -:10510000300001002F0000002F0000002F000000E1 -:105110002F0001002E0000002E0000002E000100D4 -:105120002D0000002D0000002D0000002D000100CA -:105130002C0000002C0000002C0000002C000100BE -:105140002B0000002B0000002B0000002B000100B2 -:105150002A0000002A0000002A0000002A000100A6 -:10516000290000002900000029000000290000009B -:10517000290001002800000028000000280000008D -:105180002800000028000100270000002700000080 -:105190002700000027000000270001002600000073 -:1051A0002600000026000000260000002600010066 -:1051B000250000002500000025000000250000005B -:1051C000250000002500010024000000240000004C -:1051D000240000002400000024000100230000003F -:1051E0002300000023000000230000002300000033 -:1051F0002300000023000100220000002200000024 -:105200002200000022000000220000002200010015 -:10521000210000002100000021000000210000000A -:1052200021000000210000002100010020000000FA -:1052300020000000200000002000000020000000EE -:105240002000000020000000200001001F000000DE -:105250001F0000001F0000001F0000001F000000D2 -:105260001F0000001F0001001E0000001E000000C3 -:105270001E0000001E0000004572723A204D494E8B -:1052800054454D50204245440054656D706572612F -:105290007475726520686561746564206265642058 -:1052A0007377697463686564206F66662E204D4964 -:1052B0004E54454D5020747269676765726564206D -:1052C00021004572723A204D415854454D502042BC -:1052D00045440054656D706572617475726520682F -:1052E00065617465642062656420737769746368BE -:1052F0006564206F66662E204D415854454D502000 -:105300007472696767657265642021004572723A3C -:10531000204D494E54454D50003A204578747275E1 -:10532000646572207377697463686564206F66666C -:105330002E204D494E54454D502074726967676563 -:105340007265642021004572723A204D41585445DF -:105350004D50003A204578747275646572207377F9 -:10536000697463686564206F66662E204D415854E9 -:10537000454D50207472696767657265642021002D -:1053800020484F54454E4420544845524D414C20EE -:1053900052554E41574159002048454154424544D9 -:1053A00020544845524D414C2052554E4157415989 -:1053B00000544845524D414C2052554E4157415999 -:1053C0000042454420544845524D414C2052554ED0 -:1053D000415741590020544845524D414C205255A7 -:1053E0004E415741592028205052454845415420AC -:1053F000484F54454E44290020544845524D414C95 -:105400002052554E41574159202820505245484579 -:105410004154204845415442454429005052454892 -:10542000454154204552524F52004245442050526B -:105430004548454154204552524F52004572723AF8 -:10544000205052494E542046414E204552524F5210 -:10545000004552524F523A205072696E7420666174 -:105460006E207370656564206973206C6F77657258 -:10547000207468656E2065787065637465640045A6 -:1054800072723A20455854522E2046414E204552C1 -:10549000524F52004552524F523A2045787472751D -:1054A0006465722066616E2073706565642069733F -:1054B000206C6F776572207468656E206578706502 -:1054C0006374656400504944204175746F74756E4F -:1054D000652066696E697368656421205075742063 -:1054E000746865206C617374204B702C204B6920AC -:1054F000616E64204B6420636F6E7374616E7473AD -:105500002066726F6D2061626F766520696E746FC0 -:1055100020436F6E66696775726174696F6E2E687D -:1055200000504944204175746F74756E6520666142 -:10553000696C6564212074696D656F757400204025 -:105540003A006F6B20543A006F6B20423A0050498A -:1055500044204175746F74756E65206661696C6571 -:1055600064212054656D7065726174757265207474 -:105570006F6F206869676800204B643A2000204BF9 -:10558000693A2000204B703A200020436C6173730D -:1055900069632050494420002054753A2000204B74 -:1055A000753A2000206D61783A2000206D696E3ACE -:1055B000200020643A200020626961733A20009044 -:1055C000137D00B0157800F0177300601A6E00F0BC -:1055D0001C6900A01F640050225F0020255A00E0D3 -:1055E000275500902A5000202D4B00A02F4600F098 -:1055F00031410010343C00F0353700A03732002034 -:10560000392D00603A2800703B2300603C1E0020CA -:105610003D1900C03D1400403E0F00A03E0A00F0BE -:105620003E0500403F0000703FFBFF903FF6FFB09B -:105630003FF1FFC03FECFFD03FE7FFE03FE2FFF06C -:105640003FDDFFF03FD8FF1000C90210012C0140E0 -:1056500001220170011801B0010E01F00104015096 -:1056600002FA00B002F0003003E600D003DC009044 -:1056700004D2007005C800A006BE000008B400B047 -:1056800009AA00D00BA000600E960060118C0000EB -:1056900015820020197800C01D6E00A0226400B0A1 -:1056A000275A00902C500000314600E0343C001096 -:1056B000383200903A2800603C1E00A03D14008063 -:1056C0003E0A00203F000070012C0190012701B02C -:1056D000012201C0011D01F0011801100213013067 -:1056E000020E016002090190020401C002FF0000E5 -:1056F00003FA004003F5008003F000D003EB002024 -:1057000004E6007004E100E004DC004005D700C0BE -:1057100005D2004006CD00D006C8008007C3003087 -:1057200008BE00F008B900C009B400B00AAF00B06C -:105730000BAA00D00CA500000EA000500F9B00C0CB -:105740001096005012910000148C00C0158700B014 -:10575000178200B0197D00D01B7800001E73004036 -:10576000206E0090226900F024640040275F0090C2 -:10577000295A00E02B5500102E500020304B00100D -:10578000324600E033410090353C0010373700705E -:10579000383200A0392D00B03A2800A03B23006029 -:1057A0003C1E00103D1900903D1400103E0F00708B -:1057B0003E0A00C03E0500003F0000746D633231B8 -:1057C00033305F7072696E745F63757272656E7488 -:1057D0007328290A094809520A58092564092564C9 -:1057E0000A590925640925640A5A092564092564AA -:1057F0000A450925640925640A00746D6332313352 -:10580000305F7365745F63757272656E745F722862 -:10581000617869733D25642C2063757272656E74BE -:105820003D25640A00746D63323133305F736574F3 -:105830005F63757272656E745F6828617869733D25 -:1058400025642C2063757272656E743D25640A00B0 -:10585000544D4320445249564552204F56455254C8 -:10586000454D502000746D63323133305F696E698D -:105870007428292C206D6F64653D25530A004E4F16 -:10588000524D414C00535445414C544800436F6EB7 -:1058900074696E7565207769746820616E6F7468CD -:1058A000657220626F7764656E3F00537461746542 -:1058B0003A2000473736004D3435205A004D3435F4 -:1058C000004738300020003E003E0020003E003EF1 -:1058D000003E003E0020003E003E00200000002D63 -:1058E0002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE8 -:1058F0002D2D2D004E2F41004E2F41006D6D0000CB -:105900004D373031004D37303200496E76616C6969 -:1059100064205049442063616C2E20726573756C5D -:1059200074732E204E6F742073746F7265642074CC -:105930006F20454550524F4D2E004D3530300047B9 -:1059400031205A3135204631353030004739310069 -:1059500047312058353020593139302045302046E4 -:105960003730303000473930004D373032004D3756 -:1059700030322043004D3730322055004D37303221 -:10598000004731205A313520463135303000473913 -:1059900031004731205835302059313930204530D9 -:1059A000204637303030004D383300473930004D15 -:1059B0003834004D313034205330004D38340047F6 -:1059C0003120583130205931383020463430303091 -:1059D000004731205A31302046313330302E3030BC -:1059E00030004D313430205330004D3130342053AD -:1059F00030004D31303700473120452D302E3037C3 -:105A00003530302046323130302E303030303000BA -:105A1000473120583530205935352045332E363220 -:105A20003737330047312058323030205935352050 -:105A300045302E3439333836004731205832303033 -:105A4000205937352045332E36323737330047312A -:105A500020583530205937352045302E34393338E9 -:105A60003600473120583530205939352045332EFE -:105A700036323737330047312058323030205939E9 -:105A8000352045302E3439333836004731205832EE -:105A9000303020593131352045332E3632373733C7 -:105AA0000047312058353020593131352045302ECE -:105AB00034393338360047312058353020593133A6 -:105AC000352045332E3632373733004731205832B0 -:105AD000303020593133352045302E363631373489 -:105AE0000047312058323030205931353520453289 -:105AF0002E36323737330047312058313030205975 -:105B0000313535204532004731205837352059315D -:105B100035352045322E350047312046313038307A -:105B20000047312058353020593135350047312074 -:105B30004634303030004D32303420533130303044 -:105B4000004731205A302E31353020463732303040 -:105B50002E30303000473120452D312E3530303059 -:105B6000302046323130302E3030303030004D3839 -:105B70003300473930004732310047393220453051 -:105B80002E3000473120583130302E302045313210 -:105B90002E352046313030302E30004731205836F7 -:105BA000302E302045392E302046313030302E30E6 -:105BB000004739322045302E300047323800473810 -:105BC00037004D3130392053323130004D313930CA -:105BD00020533535004D31343020533535004D31AB -:105BE00030342053323130004D31303700473930B6 -:105BF000004731204531004D3832004731204531D2 -:105C0000004D3833004D31303620532564004D327D -:105C1000323020532564003A20002020202020200C -:105C20002020202020202020202020202000203A7A -:105C30002000202020202020202020202020202084 -:105C40002020202020200020202020202020202074 -:105C500020202020002573002020002D2D3A2D2DFE -:105C6000002000200020004C002020002046002DB5 -:105C70002D2D003E555342005344002D2D0025206C -:105C800020202020002020002020000120002020B3 -:105C9000202D2D2D200020205A0020200001200042 -:105CA0004D36303000464C4558202D2020323330C0 -:105CB0002F35300050502020202D20203235342F19 -:105CC0003130300048495053202D20203232302FBF -:105CD0003130300041425320202D20203235352FE5 -:105CE0003130300050455420202D20203234302FC8 -:105CF000393000504C4120202D20203231352F36B4 -:105D000030006661726D20202D20203235302F3416 -:105D100030004D3234004D323320257300052E2ED5 -:105D200000580059005A0045787472756465720015 -:105D30004739390044697361626C65206661726D30 -:105D4000206D6F64653F0044697361626C65206615 -:105D500061726D206D6F6465004661726D206E75B5 -:105D60006D626572004D38340041786973206C654E -:105D70006E67746820646966666572656E63653A0D -:105D8000004D656173757265642061786973206C7C -:105D9000656E6774683A0025632041584953205363 -:105DA00047313D25640A005072696E742066616E49 -:105DB0002073706565643A20004D38340047312007 -:105DC0005A3135004732382057005A30005A3100D6 -:105DD000593000593100583000583100456E642068 -:105DE00073746F70732064696167004D34340047C9 -:105DF00032382057001B5B303B314842656C7420C1 -:105E00007374617475731B5B313B32485820256491 -:105E10001B5B323B324859202564001B5B323B310F -:105E200048416D6269656E743A2020256425631BC4 -:105E30005B333B314850494E44413A2020202025D5 -:105E4000642563001B5B303B31484E6F7A7A6C658A -:105E50003A202020256425631B5B313B3148426595 -:105E6000643A20202020202025642563001B5B311C -:105E70003B31485057523A20202020202025642EC4 -:105E80002530316456001B5B313B314852414D2077 -:105E9000737461746973746963731B5B313B354858 -:105EA00053505F6D696E3A203078253034781B5B33 -:105EB000323B3148686561705F73746172743A2077 -:105EC0003078253034781B5B333B3348686561702C -:105ED0005F656E643A20307825303478004465621E -:105EE0007567002D2D2D2D2D2D2D2D2D2D2D2D00BA -:105EF000466C617368416972204950204164647244 -:105F00003A002D2D2D2D2D2D2D2D2D2D2D2D004AF1 -:105F1000616E2020342032303138002D2D2D2D2D72 -:105F20002D2D2D2D2D2D2D00453344763666756C87 -:105F30006C0045494E595F30346100315F37356D33 -:105F40006D5F4D4B33002D2D2D2D2D2D2D2D2D2DF8 -:105F50002D2D0020332E312E312D5243342062312D -:105F6000343365004669726D776172653A00256465 -:105F70002E25642E25642E2564004661696C2073ED -:105F800074617473004661726D206E756D62657226 -:105F900000007263006265746100616C706861008A -:105FA0006465760050525553413344465700332EB2 -:105FB000312E312D5243340000000A0B02090C0D22 -:105FC0000E080703040100000000000000000000AC -:105FD00000000000000000000000000000000000C1 -:105FE000000000001211100000000000000000007E -:105FF00000000000000000000000000000000000A1 -:10600000000000000000000000000000000001028D -:1060100010202008081020401020408002010201BA -:106020000804020101020408102040808040201072 -:1060300008040201800402018040201008040201CB -:106040000804020101020408102040800102040833 -:106050001020408010080408801020400440801068 -:106060002040048005050505070508080808020208 -:1060700002020A0A080804040404010101010101E2 -:1060800001010303030303030303040707070C0CC5 -:106090000C0C0C0C0C0C020202020606060606068C -:1060A00006060B0B0B0B0B0B0B0B07070A0A0A0A56 -:1060B0000A0A05050504040408080000200023005E -:1060C000260029002C002F003200000100000301EF -:1060D0000601090100002200250028002B002E00E7 -:1060E0003100340002010000050108010B0100002D -:1060F0002100240027002A002D0030003300010178 -:106100000000040107010A01024E414E494E495464 -:1061100059494E46CDCCCC3D0AD7233C17B7D13890 -:1061200077CC2B329595E6241FB14F0A0000204111 -:106130000000C84200401C4620BCBE4CCA1B0E5A80 -:10614000AEC59D7400407A10F35A00A0724E180933 -:106150000010A5D4E80000E87648170000E40B54CE -:10616000020000CA9A3B000000E1F505000080969D -:106170009800000040420F000000A08601000000CF -:10618000102700000000E803000000006400000089 -:1061900000000A00000000000100000000002C7652 -:1061A000D888DC674F0823DFC1DFAE59E1B1B7966D -:1061B000E5E3E453C63AE651997696E8E6C28426CA -:1061C000EB898C9B62ED407C6FFCEFBC9C9F40F2A6 -:1061D000BAA56FA5F490055A2AF75C936B6CF96722 -:1061E0006DC11BFCE0E40D47FEF520E6B500D0EDE7 -:1061F000902E0300943577050080841E080000204F -:106200004E0A000000C80C333333330F986E1283EC -:106210001141EF8D2114893BE65516CFFEE6DB18C0 -:10622000D1844B381BF77C1D901DA4BBE424203285 -:1062300084725E228100C9F124ECA1E53D272EA4E1 -:1062400029CC8AFD72015FA411241FBECFEFD1E2D9 -:10625000DEBFCDBF00E00CBF18E0A0E0B2E0E8E197 -:10626000F0EA03E00BBF02C007900D92A439B1071A -:10627000D9F72AE1A4E9B8E001C01D92AE3FB20708 -:10628000E1F712E6C6E4D2E600E006C02297010973 -:10629000FE010BBF0F94AFC5CE33D10780E00807D6 -:1062A000A9F70F9487BF0D94FACF0C9400001092B9 -:1062B000F11A1092E01A4091E11A5091E21AE3EEBD -:1062C000FAE180E090E061E070E09B01082E02C0FE -:1062D000220F331F0A94E2F724233523232B11F4D2 -:1062E00011821082019632968730910571F70895D8 -:1062F00082E793E00F9437CA1092E21A1092E11AE3 -:10630000EAE7F0E0808187608083ACE7B0E08C91C1 -:1063100080648C938081806880838FE580937E0089 -:1063200082E080937D00C3CF282F2F7090917B0057 -:1063300083FF02C0986001C0977F90937B0090918B -:106340007C00822F8770987F892B80937C00089532 -:10635000982F21E030E080E0A9014F755270452B65 -:1063600029F04FEF490F911102C00895492F220FD4 -:10637000331F8F5F803111F0942FEECF0895CF93AC -:10638000C091F11AC7FF36C0CF70EC2FF0E021E0CA -:1063900030E00C2E02C0220F331F0A94E2F7409126 -:1063A000E11A5091E21A24233523232B71F44091F2 -:1063B000780050917900EE0FFF1FED51F54E2081CE -:1063C0003181240F351F31832083C73010F4CF5F14 -:1063D0000BC08091E01A8F5F8093E01A803118F033 -:1063E0000F94383364DFC0E08C2FB2DF9DDFC093A1 -:1063F000F11A0AC080917A00806480937A008091BB -:10640000F11A80688093F11ACF910895909119093B -:10641000911107C09091C00095FFFCCF8093C600FA -:106420000895913031F49091C80095FFFCCF80938E -:10643000CE000895CF92DF92EF92FF920F931F93B9 -:10644000CF93DF938C01D42EC62FD72FD60EDC1618 -:1064500071F1F801E080F180C990C7010F94EDCC93 -:10646000C816F1F06C2DC7010F941DCDC7010F9414 -:10647000EDCC8C15A9F0EBE3F7E08491EF018823D4 -:1064800029F0C4DF2196FE018491F9CF8AE0DF91E3 -:10649000CF911F910F91FF90EF90DF90CF90B6CFEB -:1064A000F80180819181019691838083D0CFDF9123 -:1064B000CF911F910F91FF90EF90DF90CF900895B3 -:1064C000EF92FF920F931F93CF93DF931F92CDB75D -:1064D000DEB78C017B01460FF801808191814983F1 -:1064E0000F94EDCCF70181937F01F80180819181B8 -:1064F00001969183808349814E11EECF0F90DF91F9 -:10650000CF911F910F91FF90EF9008950F931F93DC -:10651000CF93DF93CDB7DEB72C970FB6F894DEBFDD -:106520000FBECDBF8C0140E350E360E370E04D83CC -:106530005E836F8378879C878B8744E0BE016B5FA7 -:106540007F4FCE010B9676DF40E16AE678E1CE011F -:106550000B9670DF40E16AE778E1CE010B966ADFC7 -:1065600040E16AE578E1CE010B9664DF44E062E544 -:1065700078E1CE010B965EDF44E06EE478E1CE0177 -:106580000B9658DF44E066E578E1CE010B9652DFCA -:1065900044E06AE378E1CE010B964CDF44E06AE820 -:1065A00078E1CE010B9646DF44E06EE378E1CE0160 -:1065B0000B9640DF44E062E478E1CE010B963ADFCF -:1065C00044E066E478E1CE010B9634DF44E06AE40F -:1065D00078E1CE010B962EDF4CE06AEE79E0CE0139 -:1065E0000B9628DF44E063EE79E0CE010B9622DFC4 -:1065F00044E06DEA72E0CE010B961CDF44E069EAEC -:1066000072E0CE010B9616DF44E065EA72E0CE013F -:106610000B9610DF44E06DE972E0CE010B960ADFC5 -:1066200044E069E972E0CE010B9604DF44E065E9DD -:1066300072E0CE010B96FEDE80E290E09A878987B9 -:1066400042E0BE01675F7F4FCE010B96F3DE41E073 -:106650006FED79E0CE010B96EDDE44E066E272E08C -:10666000CE010B96E7DE44E06EE172E0CE010B96C0 -:10667000E1DE44E06AED79E0CE010B96DBDE44E03A -:1066800066ED79E0CE010B96D5DE44E06AE172E07A -:10669000CE010B96CFDE41E066E07AE0CE010B96AC -:1066A000C9DE44E066E472E0CE010B96C3DE46E547 -:1066B00051E360E070E049835A836B837C831C87DD -:1066C0000B8744E0BE016F5F7F4FCE010B96B2DEB9 -:1066D000E4E1FFE084918F01882331F097DE0F5FC2 -:1066E0001F4FF8018491F8CFEBE2F7E084918F011E -:1066F000882331F08BDE0F5F1F4FF8018491F8CFB4 -:106700008AE084DE2C960FB6F894DEBF0FBECDBFB4 -:10671000DF91CF911F910F9108950F931F93CF9306 -:10672000DF93C4E1DFE0FE0184918E01882331F024 -:106730006DDE0F5F1F4FF8018491F8CFEBE1F7E0BA -:1067400084918F01882331F061DE0F5F1F4FF801C4 -:106750008491F8CF8AE05ADEFE01849104E11FE0C3 -:10676000882331F053DE0F5F1F4FF8018491F8CF7B -:1067700040916A1850916B1860916C1870916D1867 -:1067800083E197E00E94F04A40916E1850916F1893 -:10679000609170187091711880E197E00E94F04A42 -:1067A0004091721850917318609174187091751817 -:1067B0008DE097E00E94F04A40917618509177184A -:1067C00060917818709179188AE097E00E94F04AF9 -:1067D0008AE01CDEFE01849104E11FE0882331F091 -:1067E00015DE0F5F1F4FF8018491F8CFE0EFF6E060 -:1067F00084918F01882331F009DE0F5F1F4FF8016C -:106800008491F8CF8AE002DEFE01849104E11FE06A -:10681000882331F0FBDD0F5F1F4FF8018491F8CF23 -:1068200040917A1850917B1860917C1870917D1876 -:1068300087EE96E00E94F04A40917E1850917F18B2 -:10684000609180187091811884EE96E00E94F04A61 -:106850004091821850918318609184187091851826 -:1068600081EE96E00E94F04A409186185091871878 -:1068700060918818709189188EED96E00E94F04A18 -:106880008AE0C4DDFE01849104E11FE0882331F039 -:10689000BDDD0F5F1F4FF8018491F8CFE0ECF6E00B -:1068A00084918F01882331F0B1DD0F5F1F4FF80114 -:1068B0008491F8CF8AE0AADDFE01849104E11FE013 -:1068C000882331F0A3DD0F5F1F4FF8018491F8CFCB -:1068D00040915A1850915B1860915C1870915D1846 -:1068E00087EB96E00E94184B40915E1850915F181C -:1068F000609160187091611884EB96E00E94184BCB -:1069000040916218509163186091641870916518F5 -:1069100081EB96E00E94184B4091661850916718E1 -:1069200060916818709169188EEA96E00E94184B81 -:106930008AE06CDDFE01849104E11FE0882331F0E0 -:1069400065DD0F5F1F4FF8018491F8CFE9E7F6E0AE -:1069500084918F01882331F059DD0F5F1F4FF801BB -:106960008491F8CF8AE052DDFE01849104E11FE0BA -:10697000882331F04BDD0F5F1F4FF8018491F8CF72 -:1069800040915218509153186091541870915518B5 -:1069900080E796E00E94F04A40914E1850914F18BF -:1069A00060915018709151188DE696E00E94F04A5F -:1069B0008AE02CDDFE01849104E11FE0882331F0A0 -:1069C00025DD0F5F1F4FF8018491F8CFEAEBF5E06A -:1069D00084918F01882331F019DD0F5F1F4FF8017B -:1069E0008491F8CF8AE012DDFE01849104E11FE07A -:1069F000882331F00BDD0F5F1F4FF8018491F8CF32 -:106A00004091561850915718609158187091591824 -:106A100081EB95E00E94F04A40913A1850913B1862 -:106A200060913C1870913D188EEA95E00E94F04A02 -:106A300040918A1850918B1860918C1870918D1824 -:106A40008BEA95E00E94184B40913E1850913F18F8 -:106A5000609140187091411888EA95E00E94F04AD0 -:106A60004091421850914318609144187091451814 -:106A700085EA95E00E94F04A4091461850914718E7 -:106A8000609148187091491882EA95E00E94F04A96 -:106A900040914A1850914B1860914C1870914D18C4 -:106AA0008FE995E00E94F04A8AE0B0DCFE01849113 -:106AB00004E11FE0882331F0A9DC0F5F1F4FF801CC -:106AC0008491F8CFEDE8F5E084918F01882331F0CF -:106AD0009DDC0F5F1F4FF8018491F8CF8AE096DCB0 -:106AE000FE01849104E11FE0882331F08FDC0F5F09 -:106AF0001F4FF8018491F8CF4091EA095091EB09BA -:106B00006091EC097091ED0984E895E00E94F04AEB -:106B10004091EE095091EF096091F0097091F109EF -:106B200081E895E00E94F04A4091F2095091F30902 -:106B30006091F4097091F5098EE795E00E94F04AA2 -:106B40008AE064DCFE01849104E11FE0882331F0D7 -:106B50005DDC0F5F1F4FF8018491F8CFE0E7F5E0AF -:106B600084918F01882331F051DC0F5F1F4FF801B2 -:106B70008491F8CF8AE04ADCFE01849104E11FE0B1 -:106B8000882331F043DC0F5F1F4FF8018491F8CF69 -:106B90004091AD025091AE026091AF027091B0028F -:106BA00086E695E00E94F04A6091A9027091AA02DF -:106BB0008091AB029091AC020F946034AB01BC01A8 -:106BC00083E695E00E94F04A6091A5027091A602CA -:106BD0008091A7029091A8020F946C34AB01BC0184 -:106BE00080E695E00E94F04A8AE010DCFE01849184 -:106BF00004E11FE0882331F009DC0F5F1F4FF8012B -:106C00008491F8CFEAE4F5E084918F01882331F094 -:106C1000FDDB0F5F1F4FF8018491F8CF8AE0F6DBB0 -:106C2000FE01849104E11FE0882331F0EFDB0F5F68 -:106C30001F4FF8018491F8CF40919D0250919E0220 -:106C400060919F027091A00280E495E00E94F04A5A -:106C50006091990270919A0280919B0290919C029E -:106C60000F946034AB01BC018DE395E00E94F04AC3 -:106C7000609195027091960280919702909198028E -:106C80000F946C34AB01BC018AE395E00E94F04A9A -:106C90008AE0BCDBFE01849104E11FE0882331F02F -:106CA000B5DB0F5F1F4FF8018491F8CFE6E0F5E008 -:106CB00084918F01882331F0A9DB0F5F1F4FF8010A -:106CC0008491F8CF8AE0A2DBFE01849104E11FE009 -:106CD000882331F09BDB0F5F1F4FF8018491F8CFC1 -:106CE000409126025091270260912802709129025A -:106CF0008CEF94E00E94F04A20E030E040E752E45C -:106D000060911E0270911F028091200290912102D9 -:106D10000F9444C3AB01BC0189EF94E00E94F04A98 -:106D20004091DA095091DB096091DC097091DD092D -:106D300086EF94E00E94F04A8AE068DBFE018491CD -:106D400004E11FE0882331F061DB0F5F1F4FF80182 -:106D50008491F8CFEAECF4E084918F01882331F03C -:106D600055DB0F5F1F4FF8018491F8CF8AE04EDBAF -:106D7000FE01849104E11FE0882331F047DB0F5FBF -:106D80001F4FF8018491F8CF4091D6095091D7094F -:106D90006091D8097091D90980EC94E00E94F04A82 -:106DA00020E030E040E752E460911A0270911B024B -:106DB00080911C0290911D020F9444C3AB01BC0151 -:106DC0008DEB94E00E94F04A8AE020DBFE01849182 -:106DD00004E11FE0882331F019DB0F5F1F4FF8013A -:106DE0008491F8CFE3E6F4E084918F01882331F0B9 -:106DF0000DDB0F5F1F4FF8018491F8CF8AE006DBAF -:106E0000FE01849104E11FE0882331F0FFDA0F5F77 -:106E10001F4FF8018491F8CF4091DF0950E060E006 -:106E200070E089E594E00E94184B8AE0EFDAFE01F9 -:106E3000849104E11FE0882331F0E8DA0F5F1F4FEF -:106E4000F8018491F8CF8091060A882339F1E6E4AD -:106E5000F4E084918F01882331F0D8DA0F5F1F4F5F -:106E6000F8018491F8CF8AE0D1DAFE01849104E13F -:106E70001FE0882331F0CADA0F5F1F4FF8018491B9 -:106E8000F8CF4091460250914702609148027091BC -:106E900049028CE394E00E94F04A0BC0E0E2F4E087 -:106EA0008491EF01882329F0B1DA2196FE018491C3 -:106EB000F9CF8AE0DF91CF911F910F91A7CAAF92CE -:106EC000BF92CF92DF92EF92FF920F931F93CF93D7 -:106ED000DF93CDB7DEB7E0970FB6F894DEBF0FBEF5 -:106EE000CDBF80E1E2EEF2E0DE01919601900D92DD -:106EF0008A95E1F780E1E2EFF2E0DE015196019040 -:106F00000D928A95E1F780E1E2E0F3E0DE0111966F -:106F100001900D928A95E1F76E0181E2C80ED11CB5 -:106F20008AE6E82E88E1F82E8E010F5E1F4F6AE791 -:106F300078E1AE014F5F5F4F9AE5A92E98E1B92E37 -:106F400020E030E0F60181919191A191B1916F0122 -:106F5000F70181939193A193B1937F01F8018191FE -:106F60009191A191B1918F01FB0181939193A19393 -:106F7000B193BF01FA0181919191A191B191AF01BA -:106F8000F50181939193A193B1935F012F5F3F4FDF -:106F900024303105B9F60F94F61380E090E4ACE9A3 -:106FA000B4E48093521890935318A0935418B0935C -:106FB000551880934E1890934F18A0935018B09383 -:106FC0005118109256181092571810925818109283 -:106FD000591880E29EE4A0E0B0E080938A18909374 -:106FE0008B18A0938C18B0938D1810923A181092A9 -:106FF0003B1810923C1810923D1880E090E0A0E7FA -:10700000B1E480933E1890933F18A0934018B0933A -:1070100041188093421890934318A0934418B0935A -:1070200045188DEC9CECACECBEE380934618909335 -:107030004718A0934818B093491880E090E0A0E268 -:10704000B0E480934A1890934B18A0934C18B093D7 -:107050004D181092F2091092F3091092F40910924F -:10706000F5091092EE091092EF091092F0091092B2 -:10707000F1091092EA091092EB091092EC091092B2 -:10708000ED098DE39AE0A1E8B1E48093AD0290931D -:10709000AE02A093AF02B093B0026DEC7CEC84E939 -:1070A0009FE30F945A346093A9027093AA028093CD -:1070B000AB029093AC0265E87BEE80E692E40F941D -:1070C00066346093A5027093A6028093A702909302 -:1070D000A8020F94B42480E090E0A0E8BFE380937E -:1070E000A1029093A202A093A302B093A4021092D3 -:1070F000DF0980E090E0A0E4B0E480932602909362 -:107100002702A0932802B093290240E050E064E3F4 -:1071100072E440931E0250931F026093200270930A -:1071200021021092DA091092DB091092DC09109208 -:10713000DD091092D6091092D7091092D809109241 -:10714000D90940E050E060E071E440931A025093A6 -:107150001B0260931C0270931D021092060A80931A -:10716000460290934702A0934802B09349020E94BE -:107170009B60E4E1FFE084918F01882331F046D9E0 -:107180000F5F1F4FF8018491F8CFE4EEF3E0849194 -:107190008F01882331F03AD90F5F1F4FF801849196 -:1071A000F8CF8AE0E0960FB6F894DEBF0FBECDBFF1 -:1071B000DF91CF911F910F91FF90EF90DF90CF90D3 -:1071C000BF90AF9023C90F931F93CF93DF93CDB799 -:1071D000DEB72C970FB6F894DEBF0FBECDBF9C87ED -:1071E0008B8786E591E3A0E0B0E089839A83AB8347 -:1071F000BC8344E0BE016B5F7F4FCE010B9660D92C -:1072000043E050E0BE016B5F7F4FCE0101960F94CB -:1072100051C9892B09F0CEC040E16AE678E1CE0180 -:107220000B964ED940E16AE778E1CE010B9648D93A -:1072300040E16AE578E1CE010B9642D90F94F6134E -:1072400044E062E578E1CE010B963AD944E06EE481 -:1072500078E1CE010B9634D944E066E578E1CE01C1 -:107260000B962ED944E06AE378E1CE010B9628D93B -:1072700044E06AE878E1CE010B9622D944E06EE35F -:1072800078E1CE010B961CD944E062E478E1CE01AE -:107290000B9616D944E066E478E1CE010B9610D93E -:1072A00044E06AE478E1CE010B960AD94CE06AEE3C -:1072B00079E0CE010B9604D944E063EE79E0CE018B -:1072C0000B96FED844E06DEA72E0CE010B96F8D83A -:1072D00044E069EA72E0CE010B96F2D844E065EA38 -:1072E00072E0CE010B96ECD844E06DE972E0CE017D -:1072F0000B96E6D844E069E972E0CE010B96E0D83F -:1073000044E065E972E0CE010B96DAD842E0BE01B6 -:10731000675F7F4FCE010B96D3D841E06FED79E0E8 -:10732000CE010B96CDD844E066E272E0CE010B961A -:10733000C7D844E06EE172E0CE010B96C1D844E0BC -:107340006AED79E0CE010B96BBD844E066ED79E0BA -:10735000CE010B96B5D844E06AE172E0CE010B96FF -:10736000AFD841E066E07AE0CE010B96A9D844E0C0 -:1073700066E472E0CE010B96A3D80F94B424E4E146 -:10738000FFE084918F01882331F040D80F5F1F4FB9 -:10739000F8018491F8CFE6E0F4E084918F0188232E -:1073A00031F034D80F5F1F4FF8018491F8CF8AE095 -:1073B0002DD801C084DD2C960FB6F894DEBF0FBE29 -:1073C000CDBFDF91CF911F910F910895682F77273F -:1073D00067FD70958091CB0F9091CC0F8053904FAB -:1073E0000F9436C99093C20F8093C10F21E0892B6F -:1073F00009F420E0822F08958091C10F9091C20F6F -:1074000060E070E001960D94DFC5282F6091F81AB6 -:107410007091F91A90E02A3018F0895A9F4F01C0F4 -:10742000C0960D94A4C9CF93C82F82958F70EDDFBD -:107430008C2F8F70CF91E9CFCF93C82F892FF3DF97 -:107440008C2FCF91F0CF6F927F928F929F92AF92BD -:10745000BF92CF92DF92EF92FF920F931F93CF9341 -:10746000DF936B017C01EA01122F209709F455C0CC -:10747000123011F48E2DC9DFC601DEDF6091F81ADB -:107480007091F91A80E290E00F94A4C9702E7C1AD2 -:107490008C2F870D09F438C01130D1F088F01230EC -:1074A00029F5460157018FEF881A980AA80AB80AE9 -:1074B000EE24D7FCE094FE2CEBBEF601679013C0DF -:1074C000F60160808FEFC81AD80AE80AF80A0FC0E0 -:1074D000460157018FEF881A980AA80AB80AC60110 -:1074E0000F94EDCC682E7501640101C0612C609190 -:1074F000F81A7091F91A80E290E00F94A4C9862DD1 -:1075000092DF219709F0C4CF6091F81A7091F91AAF -:107510008AE090E00F94A4C9A8CFDF91CF911F918A -:107520000F91FF90EF90DF90CF90BF90AF909F9022 -:107530008F907F906F900895CF93DF93FB0120E0B1 -:1075400030E0DC01ED018D918823A1F14115510559 -:1075500019F02417350774F58032A1F38A3051F100 -:1075600090ED980F9A3020F4682F6295607F08C0E4 -:107570009FE9980F9630A8F4682F6295607F605756 -:10758000CE0102967981A0EDA70FAA3018F4762FCC -:107590007A2B0CC0AFE9A70FA63018F47755762BDD -:1075A00005C088279927821B930B05C071932F5F15 -:1075B0003F4FC7CFC901DF91CF9108958BE793E08B -:1075C0000F9437CAF894FFCFE091C10FF091C20F2A -:1075D0008181882399F082E4F9DE882369F0F894A8 -:1075E00028E088E190E00FB6F894A89580936000B9 -:1075F0000FBE20936000FFCF0C9400000895F89414 -:10760000C0E0D0E06FEFCE010F941DCD2196C115E3 -:1076100080E2D807B9F728E088E190E00FB6F89447 -:10762000A895809360000FBE20936000FFCF0F935A -:107630001F93CF93DF93CDB7DEB762970FB6F89461 -:10764000DEBF0FBECDBF81E4C1DE8823A9F08091EB -:10765000C10F9091C20FFC012181283741F440E114 -:1076600050E060E070E002960F9447C703C0C4DEAC -:107670000F94DEC08B0102C000E010E083E4A6DEC0 -:10768000882331F0B9DE0F94DEC0262F872F02C089 -:1076900020E080E21F71422F582F4130F0E25F0757 -:1076A00010F040E050E2CA01800F911F81309042FB -:1076B00020F040E050E2401B510B88E5498B5A8B8B -:1076C00085DE49895A898823D1F08091C10F909134 -:1076D000C20F40E150E0BE016F5F7F4F01962CDF8B -:1076E000AC01009761F0FE013196CF01840F951F28 -:1076F000D801E817F90719F021912D93FACFB801B5 -:1077000080E090E000E120E09EDE62960FB6F89403 -:10771000DEBF0FBECDBFDF91CF911F910F910895B6 -:10772000AF92BF92CF92DF92EF92FF920F931F938F -:10773000CF93DF93CDB7DEB760970FB6F894DEBF77 -:107740000FBECDBF81E442DE8823A9F08091C10F36 -:107750009091C20FFC012181283741F440E150E0B3 -:1077600060E070E002960F9447C703C045DE0F94B7 -:10777000DEC08B0102C000E010E083E427DE882336 -:1077800031F03ADE0F94DEC0262F872F02C020E0B2 -:1077900080E21F71E22EF82EF1E0EF16F0E2FF0614 -:1077A00018F0E12C90E2F92EC701800F911F813073 -:1077B000904228F0E12C80E2F82EE01AF10A88E5E8 -:1077C00005DE882361F18091C10F9091C20F40E1E5 -:1077D00050E0BE016F5F7F4F0196AEDE7C010097E7 -:1077E000F1F0CE0101965C01C12CD12CCE14DF0446 -:1077F00061F0F50161915F01C601800F911F0F9447 -:107800001DCDFFEFCF1ADF0AF1CFC80115DE609161 -:10781000F81A7091F91A8AE090E00F94A4C9B8019F -:1078200080E090E000E121E0A7010DDE60960FB658 -:10783000F894DEBF0FBECDBFDF91CF911F910F91A6 -:10784000FF90EF90DF90CF90BF90AF900895CF92D0 -:10785000DF92EF92FF9280E5B9DD882309F44CC0F6 -:10786000CBDD0F94DEC06B017C018FEFC816D10415 -:1078700011F008F041C086E4A9DD882379F0BCDD71 -:107880000F94DEC06115710511F460E004C0613031 -:10789000710521F461E08C2D0F9483B986E596DDA6 -:1078A000882399F0A9DD0F94DEC06115710511F4EC -:1078B00060E004C061307105F9F461E08C2DFF9047 -:1078C000EF90DF90CF900D94BCB98C2D0F94F1B94F -:1078D00021E0892B09F420E01F922F93DF92CF92B1 -:1078E0008EE893E09F938F930F9403CA0F900F90AD -:1078F0000F900F900F900F90FF90EF90DF90CF9030 -:107900000895089508954F925F926F927F929F928B -:10791000AF92BF92CF92DF92EF92FF920F931F939D -:10792000CF93DF9389E398E09F938F930F9414CACA -:1079300086EA9FE00F94EDCCC82FC0906D19D090CF -:107940006E19E0906F19F0907019C701B6010E948E -:1079500042672B013C01E091C10FF091C20F92816F -:107960000F900F909F3311F091114CC091E0C11115 -:1079700001C090E01F929F938AE298E09F938F93BB -:107980000F9414CA0F900F900F900F9000EB1FE010 -:10799000C3E2D0E0912C80E090E02AE0A22E28E023 -:1079A000B22EBC0180E090E00F940FC120917218BC -:1079B0003091731840917418509175180F9476C0D7 -:1079C00020E030E04AE754E40F9444C30F94E3C04E -:1079D0007F936F93DF93CF93BF92AF920F9414CAAC -:1079E00093940F900F900F900F900F900F9086E050 -:1079F000981609F441C0C8010F94FACC25960E5F81 -:107A00001F4FCFCF913221F561E086EA9FE00F94BE -:107A10001DCD68E070E080EB9FE00F942BCD68E116 -:107A200070E082EB9FE00F942BCD60E370E084EB7D -:107A30009FE00F942BCD60E570E086EB9FE00F9404 -:107A40002BCD68E770E088EB9FE00F942BCD14C03E -:107A500080E5BCDC882319F0CFDC6B017C01C70119 -:107A6000B6010E9442672B013C018AE5AFDC882306 -:107A700019F0C2DC2B013C0120E030E04AE754E47D -:107A8000C301B2010F9444C30F94DEC0CB0168EE72 -:107A900073E00F9433C59F938F93C301B2010F948A -:107AA000DEC07F936F93C701B6010F94DEC07F9352 -:107AB0006F938AEE97E09F938F930F9414CA8DB7BC -:107AC0009EB708960FB6F8949EBF0FBE8DBFDF918C -:107AD000CF911F910F91FF90EF90DF90CF90BF90CB -:107AE000AF909F907F906F905F904F9008958330FC -:107AF000C9F048F4882389F0823019F58091611922 -:107B00009091621908958530B9F088F08630C9F4F3 -:107B100080916319909164190895809177199091DB -:107B20007819089580917119909172190895809132 -:107B3000651990916619089580916B1990916C194F -:107B4000089580E090E00895CF92DF92EF92FF9247 -:107B50000F931F93CF93DF9388E897E09F938F93C2 -:107B60000F9414CAE091C10FF091C20F82810F905F -:107B70000F908F3311F081112BC00EEB13E0C0E09A -:107B8000D0E0A7E7EA2EA7E0FA2EF801D080C18066 -:107B90000E5F1F4F8C2FABDFCF92DF92F4E09695F4 -:107BA0008795FA95E1F79F938F93DF93CF93FF9299 -:107BB000EF920F9414CA2196EDB7FEB738960FB620 -:107BC000F894FEBF0FBEEDBFC730D105F1F647C038 -:107BD00089E4FCDB882309F442C00EDC0F94E3C087 -:107BE000162F6730E0F586E5F1DB8823C1F1C12F60 -:107BF000D0E021E030E0012E02C0220F331F0A94B2 -:107C0000E2F78091E11A9091E21A822B932B9093E4 -:107C1000E21A8093E11AF0DB0F94DEC044E0660FB5 -:107C2000771F4A95E1F7FE01EE0FFF1FED51F54E6C -:107C300071836083E4E076956795EA95E1F77F9339 -:107C40006F931F921F938CE697E09F938F930F94EF -:107C500014CA0F900F900F900F900F900F90DF911C -:107C6000CF911F910F91FF90EF90DF90CF900895EB -:107C700066EE87EF9FE00D94FFCC60E086E69FE024 -:107C80000F94FFCC60E085E69FE00F94FFCC60E0AE -:107C900084E69FE00D94FFCC6F927F928F929F922B -:107CA000AF92BF92CF92DF92EF92FF920F931F930A -:107CB000CF93DF938BE597E09F938F930F9414CA34 -:107CC00088E584DB0F900F90811107C089E57EDB8A -:107CD000882309F4AAC0C1E001C0C0E06C2E712C59 -:107CE000C3010E94784F8C2F0F94263580E1E6EF78 -:107CF000F9E0A1ECB9E001900D928A95E1F7660CEC -:107D0000771C660C771CC3018F53964F3C0180E0B3 -:107D100090E0A8E4B3E4F30180839183A283B3836A -:107D200020E030E040E752E460915A0270915B023B -:107D300080915C0290915D020F9476C04B015C01D2 -:107D4000E090C909F090CA090091CB091091CC09C3 -:107D50002091C5093091C6094091C7095091C809C1 -:107D60006091C1097091C2098091C3099091C409C1 -:107D7000C2EED9E0DF93CF93EDECCE2EE9E0DE2E1C -:107D80000F941A070F94901D80E1E6EFF9E0A1EC43 -:107D9000B9E001900D928A95E1F7F301108211820A -:107DA0001282138220E030E040E752E460915A02F0 -:107DB00070915B0280915C0290915D020F9476C09D -:107DC0004B015C01E090C909F090CA090091CB0910 -:107DD0001091CC092091C5093091C6094091C7097D -:107DE0005091C8096091C1097091C2098091C3097D -:107DF0009091C409DF93CF930F941A070F94901DAD -:107E00000F9435352FEF2093B2029F938F9388E420 -:107E100097E09F938F930F9414CA8DB79EB70896DF -:107E20000FB6F8949EBF0FBE8DBFDF91CF911F910B -:107E30000F91FF90EF90DF90CF90BF90AF909F9009 -:107E40008F907F906F900895E091C10FF091C20FD5 -:107E500085818F3311F081112BC08091CE121F923A -:107E60008F938091CF121F928F938091D1128F9315 -:107E70008091D0128F938091D3128F938091D212E0 -:107E80008F938091D4121F928F938091D5121F925D -:107E90008F9387E993E09F938F930F9403CA8DB7D5 -:107EA0009EB70E960FB6F8949EBF0FBE8DBF089575 -:107EB000813229F50F9420018091CE121F928F9369 -:107EC0008091CF121F928F938091D1128F938091C6 -:107ED000D0128F938091D3128F938091D2128F936F -:107EE00089EA93E09F938F930F9403CA8DB79EB74F -:107EF0000A960FB6F8949EBF0FBE8DBF089582E517 -:107F000065DA811179DA88E561DA882339F074DA83 -:107F10000F94DEC07093D3126093D21289E556DAC3 -:107F2000882339F069DA0F94DEC07093D112609320 -:107F3000D0128CE44BDA882329F05EDA0F94DEC08D -:107F400060936A020895CF93DF93EC0160E08E8125 -:107F50000F94BCB981E090E00F94FEB761E08E8190 -:107F60000F94BCB981E090E00F94FEB760E08E8181 -:107F70000F94BCB984E690E0DF91CF910D94FEB7E9 -:107F8000CF92DF92EF92FF920F931F93CF93DF93E5 -:107F90007C01C0E0D0E0C62ED12C87010C0F1D1F44 -:107FA00061E0F80187810F9483B9B6010C2E02C0FD -:107FB000759567950A94E2F76170F80187810F94CF -:107FC000BCB92196C430D10541F7C701DF91CF91EB -:107FD0001F910F91FF90EF90DF90CF90B4CFCF9291 -:107FE000DF92EF92FF920F931F93CF93DF937C0169 -:107FF000C0E0D0E0C62ED12C87010C0F1D1F61E020 -:10800000F80187810F9483B9B6010C2E02C07595D3 -:1080100067950A94E2F76170F80187810F94BCB903 -:108020002196C830D10541F7C701DF91CF911F914B -:108030000F91FF90EF90DF90CF9085CF1F93CF935C -:10804000DF93EC01162F642F8C810F94BCB98D81C6 -:108050008F3F19F060E00F94BCB98F85612F84FFCA -:1080600005C0CE01DF91CF911F91B9CF70E084E0C0 -:10807000759567958A95E1F7CE0182DF612FCE0174 -:10808000DF91CF911F917CCF40E0D8CF61E0FCDF42 -:1080900080E496E00D94FEB762E0F6DF80E496E0BF -:1080A0000D94FEB7CF93DF93CDB7DEB728970FB609 -:1080B000F894DEBF0FBECDBF28E0E2E1F3E0DE01C1 -:1080C000119601900D922A95E1F7FC012389421740 -:1080D00010F04FEF420FFE013196E40FF11DE40F57 -:1080E000F11D2081260F2068622F28960FB6F89484 -:1080F000DEBF0FBECDBFDF91CF91C6CFFC0160893F -:10810000262F2460208B6C60BFCFCF93DF93EC01D0 -:10811000423018F08F8588608F874B8B1C8A222312 -:1081200029F0413019F48F8584608F8780E593ECC6 -:108130000F94FEB760E08C810F94BCB960E08E8133 -:108140000F94BCB98D818F3F19F060E00F94BCB9DA -:108150006F8564FD19C063E0CE0112DF84E991E10F -:108160000F94FEB763E0CE010BDF84E991E10F9439 -:10817000FEB763E0CE0104DF86E990E00F94FEB71E -:1081800062E0CE01FDDE13C06062CE017DDF84E9D6 -:1081900091E10F94FEB76F856062CE0175DF86E9CD -:1081A00090E00F94FEB76F856062CE016DDF6F8542 -:1081B0006062CE0169DF8CE390E00F94FEB784E04B -:1081C000888BCE019BDF8CE390E00F94FEB7CE014D -:1081D0005DDF88EB9BE00F94FEB782E0898B66E061 -:1081E000CE0152DF8CE390E00F94FEB71D8ADF9141 -:1081F000CF9108956F927F928F92AF92CF92EF922C -:108200000F931F93CF93DF93CDB7DEB73C01162FAB -:10821000842F5E854F8538899989F301848325836E -:108220000683E782C086A186828653874487358786 -:10823000968761E00F9483B9F30185818F3F19F030 -:1082400061E00F9483B961E0F30186810F9483B9F3 -:10825000112319F0F301178603C080E1F30187872A -:1082600020E041E060E1C301DF91CF911F910F91C8 -:10827000EF90CF90AF908F907F906F9046CF8F927E -:10828000AF92CF92EF920F93DC0113961C921E9245 -:108290001297E0EDF3E0ED93FC931F921F921F9273 -:1082A0001F928C2CAE2CC02EE22E042F2FEF462FC7 -:1082B00061E0A0DF0F900F900F900F900F91EF9063 -:1082C000CF90AF908F900895CF93DF93EC01423021 -:1082D00018F08F8588608F874B8B1C8A222329F0AA -:1082E000413019F48F8584608F8780E593EC0F947B -:1082F000FEB760E08C810F94BCB960E08E810F9472 -:10830000BCB98D818F3F19F060E00F94BCB96F85C7 -:1083100064FD19C063E0CE0133DE84E991E10F947E -:10832000FEB763E0CE012CDE84E991E10F94FEB745 -:1083300063E0CE0125DE86E990E00F94FEB762E0AF -:10834000CE011EDE13C06062CE019EDE84E991E1A3 -:108350000F94FEB76F856062CE0196DE86E990E0ED -:108360000F94FEB76F856062CE018EDE6F8560620E -:10837000CE018ADE8CE390E00F94FEB784E0888B18 -:10838000CE01BCDE8CE390E00F94FEB7CE0184DE1C -:1083900080E496E00F94FEB782E0898B66E0CE0120 -:1083A00073DE8CE390E00F94FEB740E068E0CE010E -:1083B00079DE6FEC77E0CE010F9457BA41E068E0C8 -:1083C000CE0170DE6FEC77E0CE010F9457BA42E039 -:1083D00066E0CE0167DE6DEC77E0CE01DF91CF91F4 -:1083E0000D9457BAFC0160896D7F608B68604CCE3C -:1083F000CF93DF93EC01262F8D898230B0F0FE0100 -:10840000E80FF11D658B3E8980ED860F8A3058F4A8 -:10841000316081E090E00D8802C0880F991F0A94B6 -:10842000E2F7382B01C03E7F3E8B4D8981E0840FFF -:108430008D8B50E04830510508F0B6C0FA01EE5877 -:10844000FF4F0D9484C52B3109F0AEC0AEC01E8A1B -:108450002B3509F0A9C0A9C0223309F4A6C02F33D7 -:1084600009F4A3C08E897AC08F89823331F08F33AB -:1084700049F4223309F098C098C02A3419F4CE0187 -:1084800005DE92C08E8982FF8FC02B3309F066C053 -:108490008CC08F898F3341F4888D823309F084C07A -:1084A000253309F081C081C08E8982FF7DC0988DFF -:1084B0009B3311F480FD79C083FF76C02B3309F024 -:1084C00073C073C04F894F3371F4888D823309F0C4 -:1084D0006BC0898D853309F067C02C3609F064C004 -:1084E000CE0180DF61C08E8982FF5EC0988D9B3394 -:1084F00039F484FF05C0283489F54053698D2CC0B8 -:1085000083FF52C0998D9B3309F04EC027C08E89DE -:1085100082FF4AC0488D4B3361F4982F907390339B -:1085200041F4283431F44F8940536A8D6053898D6A -:1085300032C083FF39C0998D9B33B1F585FF34C0BC -:10854000283461F440538F89880F8056982F990FF3 -:10855000990F980F490F6A8D605324C080FF24C083 -:1085600024C08E89982F9C709C30F1F4998D9B3398 -:10857000D9F480768036C1F42834B1F4488D405364 -:108580008F89880F8056982F990F990F980F490F50 -:108590006B8D60538A8D880F8056982F990F990F95 -:1085A000980F690FCE017EDD1D8A81E090E0DF919A -:1085B000CF910895CF92DF92EF92FF920F931F9386 -:1085C000CF93DF931F921F92CDB7DEB78C016770F8 -:1085D00088E0689FB00111246064C80149835A8310 -:1085E00053DD4981C42E5A81D52EE12CF12CD601C0 -:1085F0006D916D01D801ED91FC910190F081E02D1C -:10860000C8011995BFEFEB1AFB0AE8E0EE16F1047A -:1086100071F70F900F90DF91CF911F910F91FF9005 -:10862000EF90DF90CF900895FC012589211102C0C1 -:108630006B3109F4DDCE41E001DD81E090E0089589 -:1086400090911909911107C09091C00095FFFCCF3E -:108650008093C6000895913031F49091C80095FF41 -:10866000FCCF8093CE0008951F920F920FB60F9209 -:1086700011240BB60F922F933F934F935F936F93F9 -:108680008F939F93EF93FF938091C00084FF03C06B -:108690008091C6001FC06091C600809119098111A8 -:1086A00017C02091150930911609C90101968F77DD -:1086B000992740911709509118098417950741F09F -:1086C000F901EB56F74F60839093160980931509D3 -:1086D0006093CE00FF91EF919F918F916F915F9189 -:1086E0004F913F912F910F900BBE0F900FBE0F90A7 -:1086F0001F9018951F920F920FB60F9211240BB670 -:108700000F922F933F934F935F936F938F939F930A -:10871000EF93FF938091C80084FF03C08091CE0047 -:108720001FC06091CE00809119098130B9F4209169 -:10873000150930911609C90101968F779927409143 -:108740001709509118098417950741F0F901EB5664 -:10875000F74F608390931609809315096093C600C4 -:10876000FF91EF919F918F916F915F914F913F9109 -:108770002F910F900BBE0F900FBE0F901F9018956A -:10878000CF92DF92EF92FF926A017B01411581EE59 -:1087900058076105710509F463C082E08093C00049 -:1087A00060E079E08DE390E0A70196010F9468C541 -:1087B0002150310941095109CA01B90122E030E0D3 -:1087C00040E050E00F9468C591E03093C5002093DD -:1087D000C4008091C10080618093C1008091C1007C -:1087E00088608093C1008091C10080688093C1003F -:1087F000809119098130D1F5992341F082E080936D -:10880000C80060E079E08DE390E006C01092C800F7 -:1088100060E874E88EE190E0A70196010F9468C5C6 -:108820002150310941095109CA01B90122E030E062 -:1088300040E050E00F9468C53093CD002093CC0009 -:108840008091C90080618093C9008091C9008860CF -:108850008093C9008091C90080688093C90006C0D8 -:108860001092C00090E020E130E0AFCFFF90EF9099 -:10887000DF90CF90089520911709309118098091C9 -:108880001509909116098217930771F0F901EB56BB -:10889000F74F80812F5F3F4F2F7733273093180991 -:1088A0002093170990E008958FEF9FEF089580912E -:1088B0001709909118099093160980931509089546 -:1088C0004F925F926F927F928F929F92AF92BF92E0 -:1088D000CF92DF92EF92FF920F931F93CF93DF938C -:1088E000CDB7DEB7A0970FB6F894DEBF0FBECDBFF1 -:1088F0004115510561057105C1F480E3A0960FB6DD -:10890000F894DEBF0FBECDBFDF91CF911F910F91C5 -:10891000FF90EF90DF90CF90BF90AF909F908F909F -:108920007F906F905F904F908BCECE0101967C012F -:10893000812C912C54018C01422E512C612C712CD4 -:108940009FEF891A990AA90AB90ACB01BA01A301B2 -:1089500092010F9446C5CA01F70161937F01A901F5 -:10896000BC01411551056105710551F7750164019F -:10897000F1E0CF1AD108E108F108F801EC0DFD1D76 -:1089800080818A3010F4805D01C0895C59DE81E00D -:10899000C81AD108E108F1089FEFC916D906E906FF -:1089A000F90659F7A0960FB6F894DEBF0FBECDBFFB -:1089B000DF91CF911F910F91FF90EF90DF90CF90BB -:1089C000BF90AF909F908F907F906F905F904F90EF -:1089D00008952115310511F4842F32CE71CF0F93F4 -:1089E0001F93CF93DF9300D01F92CDB7DEB78C01DA -:1089F00077FF11C08DE249835A836B837C8320DE2D -:108A000049815A816B817C81709560955095419523 -:108A10005F4F6F4F7F4F2AE0C8010F900F900F906C -:108A20000F90DF91CF911F910F914ACF2115310502 -:108A300011F4842F05CE2A30310509F4D0CF40CF70 -:108A40009A01462F552747FD5095652F752FEECF7C -:108A50009A01AB01662757FD6095762FE7CF8DE031 -:108A6000EFDD8AE0EDCD0F931F93CF93DF938C0161 -:108A7000EB018991882311F0E3DDFBCFC801DF9181 -:108A8000CF911F910F91EBCFCF93DF93EC019A0120 -:108A9000AB01662757FD6095762FC8DFCE01DF91C9 -:108AA000CF91DDCFCF93DF93EC019A01462F50E0B9 -:108AB00060E070E08EDFCE01DF91CF91D0CFCF9319 -:108AC000DF93EC019A01AB0160E070E082DFCE0140 -:108AD000DF91CF91C4CFCF93DF93EC017ADFCE014A -:108AE000DF91CF91BCCF8F929F92AF92BF92CF92E6 -:108AF000DF92EF92FF921F93CF93DF93EC016A0115 -:108B00007B01122F20E030E0A901C701B6010F94CC -:108B10006FC087FF06C08DE293DDF7FAF094F7F897 -:108B2000F094B12C60E070E080E09FE3B11641F07A -:108B300020E030E040E251E40F9476C0B394F6CFE9 -:108B40009B01AC01C701B6010F9496BF6B017C017C -:108B50000F94E3C04B015C010F940FC19B01AC016A -:108B6000C701B6010F9495BF6B017C012AE0B501E6 -:108B7000A401CE01A5DE112359F08BE9A82E85E0D2 -:108B8000B82EF50181915F01882311F059DDF9CFED -:108B9000112319F120E030E040E251E4C701B601B1 -:108BA0000F9444C36B017C010F94DEC04B01AA24D7 -:108BB00097FCA094BA2CB501A401CE0110DFC50129 -:108BC000B4010F9411C19B01AC01C701B6010F9410 -:108BD00095BF6B017C011150DBCFDF91CF911F91CD -:108BE000FF90EF90DF90CF90BF90AF909F908F90CD -:108BF000089579CFCF93DF93EC0175DFCE01DF913C -:108C0000CF912DCFFC016591759185919491089537 -:108C1000EF92FF920F931F93CF93DF93EC01CC0F52 -:108C2000DD1FCC0FDD1FCE018051914FEBDF9E0188 -:108C30002A50364F79018E010651164FF8012081D6 -:108C40003181428153810F9496BFF7016083718314 -:108C500082839383CE01885F904FD4DF9E012A5C8C -:108C60003D4F7901F80120813181428153810F9478 -:108C700096BFF7016083718382839383CE01845012 -:108C8000914FC0DFC65DDD4FF80120813181428107 -:108C900053810F9496BF688379838A839B83DF9186 -:108CA000CF911F910F91FF90EF9008952091CB0FDE -:108CB0003091CC0FBC01C9018053904F0F946EC905 -:108CC0009093C20F8093C10F21E0892B09F420E01B -:108CD000822F0895CF93C82F40910E0250910F021A -:108CE00060911002709111024093AD095093AE094A -:108CF0006093AF097093B0092091580230915902E6 -:108D00003093770A2093760A24E630E030935902B4 -:108D1000209358020F9498B76093A8097093A909FB -:108D20008093AA099093AB098C2FCF910D94AB152A -:108D300080E00F94AB158091AD099091AE09A091A0 -:108D4000AF09B091B00980930E0290930F02A093E7 -:108D50001002B09311028091760A9091770A909355 -:108D60005902809358020F9498B76093A8097093A2 -:108D7000A9098093AA099093AB090895682F7727D2 -:108D800067FD70958091CB0F9091CC0F8053904FE1 -:108D90000F9436C99093C20F8093C10F21E0892BA5 -:108DA00009F420E0822F08958091C10F9091C20FA5 -:108DB0004AE050E060E070E001960F9447C7CB01B5 -:108DC00008958091C10F9091C20F4AE050E060E099 -:108DD00070E001960D9447C78091C10F9091C20F2A -:108DE00060E070E001960D94DFC590911909911132 -:108DF00007C09091C00095FFFCCF8093C6000895F6 -:108E0000913031F49091C80095FFFCCF8093CE0053 -:108E10000895EBDF80E090E008952F923F924F920B -:108E20005F926F927F928F929F92AF92BF92CF92FA -:108E3000DF92EF92FF920F931F93CF93DF93CDB703 -:108E4000DEB760970FB6F894DEBF0FBECDBF1C0132 -:108E50002A013B014801590120E030E04CE052E496 -:108E6000C301B2010F9495BF25E535E547E052E413 -:108E70000F9476C06B017C010F944CC10F94DEC03F -:108E80008B0177FF12C020E030E040E85FE3C701CC -:108E9000B6010F9472C218160CF05DC0C12CD12C13 -:108EA000E0E8EE2EEFE3FE2E56C066307105DCF0F2 -:108EB0002AEA3AE24CE453E4C301B2010F9495BFAD -:108EC00025E535E547E052E40F9476C06B017C015F -:108ED00020E030E0A9010F946FC087FF3FC0C12C94 -:108EE000D12C76013BC0882777FD8095982F0F9471 -:108EF00011C125E535E547E052E40F9444C320E075 -:108F000030E04CE052E40F9496BF9B01AC01C301EA -:108F1000B2010F9495BF25E535E547E052E40F9483 -:108F200076C06B017C0120E030E0A9010F946FC096 -:108F300087FD17C020E030E040E85FE3C701B601DD -:108F40000F9472C2181684F4C12CD12C70E8E72E4D -:108F50007FE3F72E09C000E010E006C005E010E056 -:108F600003C0C12CD12C760120E030E040EC50E46D -:108F7000C501B4010F9495BF2BEA3AEA42E052E4EE -:108F80000F9476C02B013C010F944CC10F94DEC0AE -:108F9000788B6F8777FF12C020E030E040E85FE316 -:108FA000C301B2010F9472C218160CF05FC0412CBD -:108FB000512C60E8662E6FE3762E58C0AF85B889D5 -:108FC0001697E4F026E535E549E253E4C501B4011E -:108FD0000F9495BF2BEA3AEA42E052E40F9476C030 -:108FE0002B013C0120E030E0A9010F946FC087FD08 -:108FF00040C0E5E0F0E0F88BEF8746C0882777FDBA -:109000008095982F0F9411C12BEA3AEA42E052E47E -:109010000F9444C320E030E040EC50E40F9496BF3E -:109020009B01AC01C501B4010F9495BF2BEA3AEA4C -:1090300042E052E40F9476C02B013C0120E030E086 -:10904000A9010F946FC087FD1CC020E030E040E80C -:109050005FE3C301B2010F9472C21816ACF4412C45 -:10906000512C50E8652E5FE3752E0EC0188A1F86BE -:109070000BC0412C512C320125E030E0388B2F877A -:1090800003C0412C512C3201A701960160E070E031 -:1090900080E89FE30F9495BF69837A838B839C83D9 -:1090A000C80101969E838D83AF85B8891196BA87D2 -:1090B000A987A301920160E070E080E89FE30F942C -:1090C00095BF6B877C878D879E8747E02F85388982 -:1090D000429FF001439FF00D1124F887EF83E00FCA -:1090E000F11FEE0FFF1FEE0FFF1FE20DF31D218199 -:1090F00032814381548169817A818B819C810F9473 -:1091000044C34B015C01EF81F8858D819E81E80F9E -:10911000F91FEE0FFF1FEE0FFF1FE20DF31D218160 -:10912000328143815481C701B6010F9444C39B012E -:10913000AC01C501B4010F9496BF9B01AC016B85D6 -:109140007C858D859E850F9444C34B015C0127E08F -:10915000E985FA852E9FD0012F9FB00D1124B88785 -:10916000AF83FD01E00FF11FEE0FFF1FEE0FFF1F9A -:10917000E20DF31D218132814381548169817A811D -:109180008B819C810F9444C369837A838B839C83F6 -:10919000AF81B8858D819E81A80FB91FAA0FBB1F13 -:1091A000AA0FBB1FA20DB31D11962D913D914D919C -:1091B0005C911497C701B6010F9444C39B01AC01A5 -:1091C00069817A818B819C810F9496BF9B01AC0150 -:1091D000C301B2010F9444C39B01AC01C501B401AA -:1091E0000F9496BF60960FB6F894DEBF0FBECDBF4A -:1091F000DF91CF911F910F91FF90EF90DF90CF9073 -:10920000BF90AF909F908F907F906F905F904F90A6 -:109210003F902F9008954F925F926F927F929F920E -:10922000AF92BF92CF92DF92EF92FF920F931F9374 -:10923000CF93DF937C015B018A01E90190900812D2 -:10924000911014C0FC0180819181A281B381FA0147 -:1092500080839183A283B383FB0180819181A2816A -:10926000B38188839983AA83BB837FC091FE55C055 -:10927000FC0120813181428153816091F81170910C -:10928000F9118091FA119091FB110F9444C32B01B5 -:109290003C01F50120813181428153816091FC11B3 -:1092A0007091FD118091FE119091FF110F9444C3B4 -:1092B0009B01AC01C301B2010F9496BFF80160831A -:1092C000718382839383F7012081318142815381AD -:1092D000609100127091011280910212909103121C -:1092E0000F9444C36B017C01F501208131814281DF -:1092F0005381609104127091051280910612909131 -:1093000007120F9444C39B01AC01C701B6010F942F -:1093100096BF688379838A839B8390FE26C02091C1 -:10932000E0113091E1114091E2115091E311F80107 -:1093300060817181828193810F9496BFF80160836F -:109340007183828393832091E4113091E5114091E0 -:10935000E6115091E711688179818A819B810F9490 -:1093600096BF688379838A839B83DF91CF911F9116 -:109370000F91FF90EF90DF90CF90BF90AF909F90B4 -:109380007F906F905F904F9008952F923F924F92F1 -:109390005F926F927F928F929F92AF92BF92CF9285 -:1093A000DF92EF92FF920F931F93CF93DF93CDB78E -:1093B000DEB728970FB6F894DEBF0FBECDBF8C0185 -:1093C0001B019E012F5F3F4FAE014B5F5F4F23DFBD -:1093D00020E030E0A9016D817E818F8198850F9416 -:1093E0006FC087FF07C01D821E821F821886FF2460 -:1093F000F39401C0F12C20E030E040E850EC6981AA -:109400007A818B819C810F946FC087FF0AC080E0B6 -:1094100090E0A0E8B0EC89839A83AB83BC83FF24FF -:10942000F39420E030E04FE753E46D817E818F813B -:1094300098850F9472C2181654F480E090E0AFE75C -:10944000B3E48D839E83AF83B887FF24F39420E039 -:1094500030E042E553E469817A818B819C810F94ED -:1094600072C218164CF480E090E0A2E5B3E4898360 -:109470009A83AB83BC8303C0FF2009F483C0C980F7 -:10948000DA80EB80FC808D809E80AF80B884709005 -:10949000081271100BC0F80180829182A282B382FF -:1094A000F101C082D182E282F3826AC070FE1CC0E8 -:1094B0002091E0113091E1114091E2115091E311BE -:1094C000C501B4010F9495BF4B015C012091E411DB -:1094D0003091E5114091E6115091E711C701B601B5 -:1094E0000F9495BF6B017C0171FE4AC02091E81179 -:1094F0003091E9114091EA115091EB11C501B4018D -:109500000F9444C32B013C012091EC113091ED11DB -:109510004091EE115091EF11C701B6010F9444C371 -:109520009B01AC01C301B2010F9496BFF8016083A7 -:109530007183828393832091F0113091F1114091D6 -:10954000F2115091F311C501B4010F9444C34B01C2 -:109550005C012091F4113091F5114091F611509178 -:10956000F711C701B6010F9444C39B01AC01C501BB -:10957000B4010F9496BFF10160837183828393835A -:10958000FF24F3948F2D28960FB6F894DEBF0FBEFC -:10959000CDBFDF91CF911F910F91FF90EF90DF90A2 -:1095A000CF90BF90AF909F908F907F906F905F9083 -:1095B0004F903F902F900895CF93DF931F92CDB798 -:1095C000DEB7BE016F5F7F4F0F9448870F90DF912A -:1095D000CF910895682F87EF9FE00D94FFCC0895F9 -:1095E0000F931F93CF93DF9300D01F92CDB7DEB7B9 -:1095F0008C01FC018491882371F049835A836B8329 -:109600007C83F3DB0F5F1F4FF80184917C816B81BA -:109610005A814981F0CF22E030E084E998E00F9050 -:109620000F900F900F90DF91CF911F910F91E1CA92 -:109630000F931F93CF93DF9300D01F92CDB7DEB768 -:109640008C01FC018491882371F049835A836B83D8 -:109650007C83CBDB0F5F1F4FF80184917C816B8192 -:109660005A814981F0CF2AE030E084E998E00F90F8 -:109670000F900F900F90DF91CF911F910F91A9C97B -:10968000CF9364ED73E084E998E0EDD9C1E0C09335 -:10969000B1026FEF89E69FE00F94FFCCC093DF0229 -:1096A000CF91089564EE73E084E998E0DCD91092DC -:1096B000B1021092CB1960E089E69FE00F94FFCCD5 -:1096C0001092DF0208950F94901D81E00F94098796 -:1096D0000F94594882E00F943C8486E69FE00F94F3 -:1096E000EDCC61E0680F86E69FE00F94FFCC81E04F -:1096F0000F94098782E00F943C84E091460AF0E0E1 -:10970000EE0FFF1FED58FA4B859194910F94B249DB -:1097100061E08FEC9EE00E94BCC561E089EC9EE0B8 -:109720000E94BCC561E08BEB9EE00C94BCC510921E -:10973000820A60E080E89AE00E94FAB981E08093B2 -:10974000B1020895EF92FF920F931F93CF93DF938F -:109750001F92CDB7DEB789830F9459488981823033 -:1097600009F478C00CF045C0882309F451C0813059 -:1097700009F008C19FB7F89480910201846080933A -:1097800002019FBFEFEFF1EE24E0E150F0402040F6 -:10979000E1F700C000009FB7F894809102018B7F31 -:1097A000809302019FBF40E050E0BA018DEE9FE040 -:1097B0000F9411CD40E050E0BA0181EF9FE00F948B -:1097C00011CD60E084E69FE00F94FFCC60E086E678 -:1097D0009FE00F94FFCC60E085E69FE00F94FFCC04 -:1097E0000F90DF91CF911F910F91FF90EF900D940B -:1097F0002168833009F461C0843009F0C3C00F9040 -:10980000DF91CF911F910F91FF90EF900D94E48D18 -:109810009FB7F894809102018460809302019FBFFA -:109820002FEF81EE94E0215080409040E1F700C09E -:1098300000009FB7F894809102018B7F8093020112 -:109840009FBF0F90DF91CF911F910F91FF90EF90ED -:109850000D9443490F94434980EFBCDE61E08FE5EE -:109860009FE00F941DCD1092801A10927F1A609184 -:10987000811A84EC9FE00F94FFCC6FE77AE181ECD2 -:109880009FE00F9497489FB7F894809102018460FD -:10989000809302019FBF8FEF91EEE4E081509040F2 -:1098A000E040E1F700C000009FB7F894809102010A -:1098B0008B7F809302019FBF65C08DEA9EE00F946D -:1098C000FF5B4CE95EE062E081E00F94656C9FB75E -:1098D000F894809102018460809302019FBFFFEFA2 -:1098E00021EE84E0F15020408040E1F700C000000C -:1098F0009FB7F894809102018B7F809302019FBFF4 -:10990000109294091092930945E95EE063E083E0C8 -:109910000F94656C409193095091940963E083E042 -:109920000F946448E12CF12C09E210E06FEFC701BD -:109930000F941DCDC701B8010F9433C5892BD9F4FD -:109940008091930990919409019690939409809342 -:1099500093094EE85EE063E083E00F94656C40910C -:1099600093095091940963E083E00F9464488CE874 -:109970009EE00F94FF5B9FEFE91AF90AE114E0E122 -:10998000FE06A1F60F90DF91CF911F910F91FF90EE -:10999000EF90089565E879E08CE59EE00D94D6C9D6 -:1099A00084E090E090931802809317028091000168 -:1099B00086FD39C02FEF83ED90E321508040904029 -:1099C000E1F700C000008091000186FD2CC00F94DB -:1099D00059488EE49EE00F94FF5B80910101846002 -:1099E000809301019FB7F894809102018460809375 -:1099F00002019FBF8091000186FFFCCF9FB7F894C2 -:109A0000809102018B7F809302019FBF2FEF87EA35 -:109A100091E6215080409040E1F700C000000F9493 -:109A20008E4C60E08FDE82E090E09093180280938D -:109A3000170208951F93CF93DF9368EC88EC0F947F -:109A4000AC01EC01DF93CF9382EE9DE09F938F9367 -:109A50000F9414CA87E69FE00F94EDCC182F0F9057 -:109A60000F900F900F90CD2B29F481E08093C711B8 -:109A700010E002C01092C71189ED9DE00F9464CAF6 -:109A8000112349F080ED9DE00F9464CADF91CF91DE -:109A90001F910C9458CC86EC9DE00F9464CADF9122 -:109AA000CF911F910C9477CC8F929F92AF92BF92DF -:109AB000CF92DF92EF92FF92CF93DF938091811A42 -:109AC000811185C00F9498B76B017C01209112021F -:109AD000222309F474C040911702509118024130BA -:109AE000510509F46CC08091130290911402A09169 -:109AF0001502B091160246015701881A990AAA0A5E -:109B0000BB0A30E0A8EEB3E00F948AC5861697062C -:109B1000A806B9060CF45BC04430510541F14CF481 -:109B2000423051050CF44BC0E4E1FFE08491EF01B9 -:109B300009C04530510509F042C0E4E1FFE08491DD -:109B4000EF012BC0882329F050D92196FE01849182 -:109B5000F9CFE1EAFDE08491EF01882329F045D9AE -:109B60002196FE018491F9CF8AE03FD928C0E4E133 -:109B7000FFE08491EF01882329F037D92196FE0177 -:109B80008491F9CFEBE8FDE08491EF01882361F344 -:109B90002CD92196FE018491F9CF882329F025D96B -:109BA0002196FE018491F9CFE4E7FDE08491EF0175 -:109BB0008823D1F21AD92196FE018491F9CFC0925F -:109BC0001302D0921402E0921502F0921602DF9175 -:109BD000CF91FF90EF90DF90CF90BF90AF909F908C -:109BE0008F90089580E1E6EFF9E0A1ECB9E00190F3 -:109BF0000D928A95E1F70895CF93C0E02091C70FA9 -:109C00003091C80F232BA9F085EF93E04FD8811135 -:109C10000EC089EF93E04AD8811109C08091C60F28 -:109C2000811102C00E94E6C41092C60FE7CFC1E0C6 -:109C3000F5CF8C2FCF9108952F923F924F925F9244 -:109C40006F927F928F929F92AF92BF92CF92DF924C -:109C5000EF92FF920F931F93CF93DF931F92CDB795 -:109C6000DEB70F945948E091460AF0E0EE0FFF1F6F -:109C7000E951F74B4591549161E080E00F94656C98 -:109C800081E00F94AB158983E7EDFEE0E4918E2F20 -:109C9000992781950CF490951C0184E00F942F373F -:109CA000AEEFB9E01D921D921D921C921397EAEF40 -:109CB000F9E02081318142815381A6EFB9E06D91B5 -:109CC0007D918D919C91E2E0CE2EEAE0DE2EE12C9A -:109CD000F12C87010F945B1285DF8CEE9EE00E94D1 -:109CE00002462DEC3CEC4CE85FE30F9444C34B017F -:109CF0005C01B101882777FD8095982F0F9411C1E1 -:109D00009B01AC01C501B4010F9444C3E9ECF9E037 -:109D100020813181428153810F9496BF2B013C01F8 -:109D2000A9ECB9E06D937D938D939C931397E2E634 -:109D3000F2E0608171818281938160930E02709361 -:109D40000F02809310029093110220E030E040E770 -:109D500052E40F9476C04B015C01A5ECB9E02D9163 -:109D60003D914D915C91E1ECF9E0608171818281DE -:109D70009381A2EEB9E0BF93AF93FDECCF2EF9E053 -:109D8000DF2E830172010F941A070F94901D0F9418 -:109D90008E3780E00F94AB15AEEFB9E01D921D92A7 -:109DA0001D921C921397EAEFF9E0208131814281E4 -:109DB0005381A6EFB9E06D917D918D919C91A2E0C8 -:109DC000CA2EAAE0DA2EE12CF12C87010F945B1247 -:109DD00009DF8AE0829DB001839D700D11248827E0 -:109DE00077FD8095982F0F9411C1E9ECF9E020815F -:109DF0003181428153810F9496BF2B013C01A9EC24 -:109E0000B9E06D937D938D939C93139720E030E0A0 -:109E100040E05FE3E2E6F2E060817181828193815C -:109E20000F9444C360930E0270930F02809310024C -:109E30009093110220E030E040E752E40F9476C0A6 -:109E40004B015C01A5ECB9E02D913D914D915C91E8 -:109E5000E1ECF9E06081718182819381A2EEB9E049 -:109E6000BF93AF93BDECCB2EB9E0DB2E8301720123 -:109E70000F941A070F94901D89810F94AB1580E001 -:109E800090E0A4E5B3E4EEEFF9E080839183A28350 -:109E9000B383AAEFB9E02D913D914D915C91E6EF2E -:109EA000F9E0608171818281938112E0C12E1AE014 -:109EB000D12EE12CF12C04E513E40F945B1281E028 -:109EC0000F900F900F900F900F90DF91CF911F91F7 -:109ED0000F91FF90EF90DF90CF90BF90AF909F9049 -:109EE0008F907F906F905F904F903F902F9008954C -:109EF0002F923F924F925F926F927F928F929F929A -:109F0000AF92BF92CF92DF92EF92FF920F931F9387 -:109F1000CF93DF93CDB7DEB729970FB6F894DEBFA6 -:109F20000FBECDBF3C0181E00F94AB158F8382E063 -:109F30006816710408F081C2F301EB52F14FE4910D -:109F4000D301AA0FBB1FAA0FBB1FBA83A983A65AAE -:109F5000BD4FBE83AD838D919D910D90BC91A02D81 -:109F600080930E0290930F02A0931002B0931102FF -:109F700081E0062C01C0880F0A94EAF70F942F376E -:109F8000E981FA81EA50F64FF987E8871082118259 -:109F900012821382E090FE09F090FF090091000AFE -:109FA0001091010A2091FA093091FB094091FC09B6 -:109FB0005091FD096091F6097091F7098091F809B7 -:109FC0009091F909E2E0CE2EEAE0DE2E0F945B12CA -:109FD000E981FA81EF53F64F2F0180E090E0A0E491 -:109FE000B0E480839183A283B38320E030E040E734 -:109FF00052E460910E0270910F02809110029091D4 -:10A0000011020F9476C04B015C01E090C909F090F9 -:10A01000CA090091CB091091CC092091C509309152 -:10A02000C6094091C7095091C8096091C109709152 -:10A03000C2098091C3099091C409F2EE2F2EF9E074 -:10A040003F2E3F922F92ADECCA2EA9E0DA2E0F944C -:10A050001A070F94901D0F94931580E00F94AB1581 -:10A06000A885B9851D921D921D921C921397E090B0 -:10A07000FE09F090FF090091000A1091010A209159 -:10A08000FA093091FB094091FC095091FD0960915A -:10A09000F6097091F7098091F8099091F909B2E0F9 -:10A0A000CB2EBAE0DB2E0F945B1280E090E0A0E8AC -:10A0B000BFEBF20180839183A283B38320E030E081 -:10A0C00040E752E460910E0270910F0280911002FD -:10A0D000909111020F9476C04B015C01E090C90988 -:10A0E000F090CA090091CB091091CC092091C509C3 -:10A0F0003091C6094091C7095091C8096091C109C2 -:10A100007091C2098091C3099091C4093F922F9226 -:10A11000EDECCE2EE9E0DE2E0F941A070F94901D81 -:10A1200081E00F94AB1589819A818C51914F0E94E7 -:10A1300002462DEC3CEC4CE85FEB0F9444C3D2019B -:10A140006D937D938D939C93139720E030E040E7CF -:10A1500052E460910E0270910F0280911002909172 -:10A1600011020F9476C04B015C01E090C909F09098 -:10A17000CA090091CB091091CC092091C5093091F1 -:10A18000C6094091C7095091C8096091C1097091F1 -:10A19000C2098091C3099091C4093F922F920F94F4 -:10A1A0001A070F94901D0F94931580E00F94AB1530 -:10A1B000E885F9851082118212821382E090FE09EF -:10A1C000F090FF090091000A1091010A2091FA090C -:10A1D0003091FB094091FC095091FD096091F6090D -:10A1E0007091F7098091F8099091F909F2E0CF2E6A -:10A1F000FAE0DF2E0F945B1280E090E0A0E2B1E481 -:10A20000F20180839183A283B38320E030E040E7B2 -:10A2100052E460910E0270910F02809110029091B1 -:10A2200011020F9476C04B015C01E090C909F090D7 -:10A23000CA090091CB091091CC092091C509309130 -:10A24000C6094091C7095091C8096091C109709130 -:10A25000C2098091C3099091C4093F922F92ADEC3D -:10A26000CA2EA9E0DA2E0F941A070F94901D0F94AE -:10A27000931581E00F94AB1580E090E0A0E7B1EC7E -:10A28000F20180839183A283B38320E030E040E039 -:10A290005FE3AD81BE816D917D918D919C910F9415 -:10A2A00044C360930E0270930F0280931002909348 -:10A2B000110220E030E040E752E40F9476C04B01F9 -:10A2C0005C01E090C909F090CA090091CB09109196 -:10A2D000CC092091C5093091C6094091C709509118 -:10A2E000C8096091C1097091C2098091C309909118 -:10A2F000C4093F922F920F941A070F94901DC30127 -:10A300000E940846F301E951F64F81E080830F94E3 -:10A310008E370F94931580E00F94AB152AE037ED3C -:10A3200043E25FE3E885F9856081718182819381F1 -:10A330000F9495BFA885B9856D937D938D939C935C -:10A340001397E090FE09F090FF090091000A109128 -:10A35000010A2091FA093091FB094091FC095091C2 -:10A36000FD096091F6097091F7098091F8099091C3 -:10A37000F909B2E0CB2EBAE0DB2E0F945B122AE093 -:10A3800037ED43E25FE3E885F98560817181828181 -:10A3900093810F9496BFA885B9856D937D938D9316 -:10A3A0009C931397F20160837183828393832AE9DC -:10A3B00039E949E95EE360910E0270910F028091E4 -:10A3C0001002909111020F9444C320E030E040E766 -:10A3D00052E40F9476C04B015C01E090C909F09003 -:10A3E000CA090091CB091091CC092091C50930917F -:10A3F000C6094091C7095091C8096091C10970917F -:10A40000C2098091C3099091C4093F922F92EDEC4B -:10A41000CE2EE9E0DE2E0F941A070F94901D1092B5 -:10A420000E0210920F0210921002109211020FB63B -:10A43000F894DEBF0FBECDBF62C192E06916710411 -:10A4400009F05DC1E7EDFEE074901092FE091092F4 -:10A45000FF091092000A1092010A2091FA09309126 -:10A46000FB094091FC095091FD096091F60970913A -:10A47000F7098091F8099091F909F2E0CF2EFAE0FE -:10A48000DF2EE12CF12C87010F945B128CEE9EE005 -:10A490000E9402464B015C01672D772767FD70958E -:10A4A000872F972F0F9411C12B013C0120E030E042 -:10A4B00040EC5FE3C501B4010F9444C3A3019201D2 -:10A4C0000F9444C369837A838B839C836093C90907 -:10A4D0007093CA098093CB099093CC096091620272 -:10A4E00070916302809164029091650260930E0204 -:10A4F00070930F02809310029093110220E030E0DD -:10A5000040E752E40F9476C04B015C012091C509ED -:10A510003091C6094091C7095091C8096091C1099D -:10A520007091C2098091C3099091C409A2EE2A2EAC -:10A53000A9E03A2E3F922F92BDECCB2EB9E0DB2E54 -:10A54000E980FA800B811C810F941A070F94901DEB -:10A550001092FE091092FF091092000A1092010A4F -:10A560002091FA093091FB094091FC095091FD09B5 -:10A570006091F6097091F7098091F8099091F909B5 -:10A5800012E0C12E1AE0D12EE12CF12C87010F949C -:10A590005B1280EE9EE00E9402469058A301920159 -:10A5A0000F9444C369837A838B839C836093C90926 -:10A5B0007093CA098093CB099093CC0920E030E0D6 -:10A5C00040E752E460910E0270910F0280911002F8 -:10A5D000909111020F9476C04B015C012091C50946 -:10A5E0003091C6094091C7095091C8096091C109CD -:10A5F0007091C2098091C3099091C4093F922F9232 -:10A600000DECC02E09E0D02EE980FA800B811C8170 -:10A610000F941A070F94901D80EE9EE00E94024650 -:10A620009B01AC010F9496BFA30192010F9444C308 -:10A630002B013C016093C9097093CA098093CB092F -:10A640009093CC0920E030E040E05FE3609162024B -:10A650007091630280916402909165020F9444C3EB -:10A6600060930E0270930F02809310029093110278 -:10A6700020E030E040E752E40F9476C04B015C01EB -:10A680002091C5093091C6094091C7095091C80968 -:10A690006091C1097091C2098091C3099091C40968 -:10A6A0003F922F92830172010F941A070F94901D0D -:10A6B00082E090E00E9408468091FE099091FF0997 -:10A6C000A091000AB091010A8093C9099093CA0928 -:10A6D000A093CB09B093CC0910920E0210920F02F6 -:10A6E00010921002109211020F94931581E0809342 -:10A6F000E9090F900F900F900F900F900F908F819E -:10A7000029960FB6F894DEBF0FBECDBFDF91CF9173 -:10A710001F910F91FF90EF90DF90CF90BF90AF907F -:10A720009F908F907F906F905F904F903F902F9071 -:10A730000D94AB15CF92DF92EF92FF920F931F9380 -:10A7400051DA80E090E0D4DB81E090E0D1DBE09072 -:10A75000FE09F090FF090091000A1091010A209172 -:10A76000FA093091FB094091FC095091FD09609173 -:10A77000F6097091F7098091F8099091F909F2E0D2 -:10A78000CF2EFAE0DF2E0F945B121F910F91FF90F6 -:10A79000EF90DF90CF900D9493150F9498B760933E -:10A7A000A8097093A9098093AA099093AB09089509 -:10A7B00020E030E0A90168EB71E084E50F94F0BB84 -:10A7C00069E170E080E090E00F94C7B784E50F94F2 -:10A7D00014BF64E170E080E090E00D94C7B78F9201 -:10A7E0009F92AF92BF92CF92DF92EF92FF920F9320 -:10A7F0001F93CF93DF9300D01F92CDB7DEB7109297 -:10A800007C1910927B1910927A19109279190F9471 -:10A81000594882EB9DE00F94FF5B8E010F5F1F4F45 -:10A820007E0125E0E20EF11C84E998E00E943B44A1 -:10A830008F3FEFEF9E07C1F3F80181938F01EE1573 -:10A84000FF0591F789809A80AB80BC808BE20E94E3 -:10A85000F546C12CD12C76018091450A882309F454 -:10A8600047C006E319E0C814D904EA04FB04A1F0C8 -:10A8700084E998E00E943B448F3FFFEF9F07C1F3BC -:10A880002FEFC21AD20AE20AF20AF80181938F016D -:10A89000F9E006371F0739F766E379E080E89AE0C8 -:10A8A0000E94C9B98BE20E94F5460F94112AC81480 -:10A8B000D904EA04FB0481F67BDF60E080E89AE0DB -:10A8C0000E94FAB91092450AE1E6F8E4E590F490A6 -:10A8D000F7018491882331F00E94F546FFEFEF1ACB -:10A8E000FF0AF6CF8AE00E94F54680E090E000C0C3 -:10A8F0000F900F900F900F90DF91CF911F910F91BC -:10A90000FF90EF90DF90CF90BF90AF909F908F908F -:10A910000895CF93C82F8FEF9FE00F94EDCC813037 -:10A9200069F40F94901DF89491E09C279093D719A7 -:10A930000F9466387894CF910D94381FCF91089575 -:10A940002F923F924F925F926F927F928F929F923F -:10A95000AF92BF92CF92DF92EF92FF920F931F932D -:10A96000CF93DF931F921F92CDB7DEB7382E81E0D1 -:10A97000D0DF311012C010927A191092791910920A -:10A980007C1910927B1910927E1910927D191092E9 -:10A99000801910927F190F94BE4880E00F940987A8 -:10A9A00089E092E10E94A8FB0E94D7DD0E94F9FA9B -:10A9B0001092E7091092E8091092E90981E00E94DB -:10A9C0006A46E5E5F9E4859194910E94DC4AB2DE9D -:10A9D00033D9882309F4A3C1E0DE311058C084E0E4 -:10A9E00090E09093180280931702E091460AF0E0FD -:10A9F000EE0FFF1FEB5DF94B8591949140E060E015 -:10AA00000F94F688882359F0E091460AF0E0EE0FA3 -:10AA1000FF1FE75EF84B859194910F94EC93E091C2 -:10AA2000460AF0E0EE0FFF1FEF52F74B859194912D -:10AA30000F94EC93E091460AF0E0EE0FFF1FED5803 -:10AA4000F84B859194910F94EC9382E090E0909371 -:10AA5000180280931702E091460AF0E0EE0FFF1F04 -:10AA6000E75AF74B859194910E94DC4A41E050E00F -:10AA700062E080E00F946448E091460AF0E0EE0F57 -:10AA8000FF1FEB5AF74B859194910F94FF5B80E089 -:10AA900090E0A0EAB0E48093FE099093FF09A093B0 -:10AAA000000AB093010A81E00F94AB15282E84E0D0 -:10AAB0000F942F3720E030E040E252E460916202D0 -:10AAC0007091630280916402909165020F9476C048 -:10AAD0004B015C01E090FE09F090FF090091000A33 -:10AAE0001091010A2091FA093091FB094091FC096B -:10AAF0005091FD096091F6097091F7098091F8096C -:10AB00009091F909E2EEF9E0FF93EF93E2E0CE2EA7 -:10AB1000EAE0DE2E0F941A070F94901D0F948E37E3 -:10AB2000822D0F94AB1582E00F94FF1D0F900F90B4 -:10AB300020E030E040EA50E40F946FC08111EBC098 -:10AB400086E50E94BE46882361F0E091C10FF09136 -:10AB5000C20F8181893039F08F7D41F00E94D44647 -:10AB600003C01A8205C081E08A8302C0A1E0AA83E3 -:10AB70003320B1F00E9498460E942CDE0E947EDFB6 -:10AB80000E9456F4882309F4C0C087EF9FE00F9419 -:10AB9000EDCC803F09F0BBC081E00E94EA4AB7C01B -:10ABA0008FEF0E94EA4A60E070E088EF9FE00F9428 -:10ABB00019CD1982BE016F5F7F4F8A810E9423F1F8 -:10ABC0003C010E949846212C312CB0EA4B2EB0E477 -:10ABD0005B2E2092FE093092FF094092000A5092AB -:10ABE000010A20E030E040E252E46091620270919C -:10ABF000630280916402909165020F9476C04B01CC -:10AC00005C012091FA093091FB094091FC095091B7 -:10AC1000FD096091F6097091F7098091F80990910A -:10AC2000F909A2EEB9E0BF93AF9312E0C12E1AE08A -:10AC3000D12E820171010F941A070F94901D0F906D -:10AC40000F9077FC47C0198289E092E10E94A8FB2F -:10AC50000E949EDD81E00E946A466CDDAE014F5F7E -:10AC60005F4F6A8181E00E9478F63C010E9498461D -:10AC70002092FE093092FF094092000A5092010A88 -:10AC800020E030E040E252E46091620270916302A1 -:10AC900080916402909165020F9476C04B015C0133 -:10ACA0002091FA093091FB094091FC095091FD096E -:10ACB0006091F6097091F7098091F8099091F9096E -:10ACC000A2EEB9E0BF93AF930F941A070F94901DB3 -:10ACD0000F900F906981C3010F94EDA677FC15C00A -:10ACE00086EE0E94EA4A8FE59FE00F94EDCC81301A -:10ACF00071F0E091460AF0E0EE0FFF1FE55BF64BC6 -:10AD0000859194910F94EC9302C010E001C011E082 -:10AD10000F948E3705C08FE29DE00F94EC9310E006 -:10AD200081E00F94098780E0F4DD812F0F900F9070 -:10AD3000DF91CF911F910F91FF90EF90DF90CF9017 -:10AD4000BF90AF909F908F907F906F905F904F904B -:10AD50003F902F9008958F929F92AF92BF92CF9283 -:10AD6000DF92EF92FF920F931F93CF93DF9315988B -:10AD700081E080933A0A82E090E09093380A8093D1 -:10AD8000370AE091460AF0E0EE0FFF1FE751F84B5B -:10AD9000859194910F94B24920E030E04CE852E460 -:10ADA0006091020A7091030A8091040A9091050A49 -:10ADB0000F9496BF6093020A7093030A8093040A6B -:10ADC0009093050AE090FE09F090FF090091000AB7 -:10ADD0001091010A2091FA093091FB094091FC0978 -:10ADE0005091FD096091F6097091F7098091F80979 -:10ADF0009091F909C2EED9E0DF93CF93812C912C89 -:10AE0000E0ECAE2EE0E4BE2EF2E0CF2EFAE0DF2E34 -:10AE10000F941A0720E030E048EC51E46091020AF8 -:10AE20007091030A8091040A9091050A0F9496BFCD -:10AE30006093020A7093030A8093040A9093050AB0 -:10AE4000E090FE09F090FF090091000A1091010ABC -:10AE50002091FA093091FB094091FC095091FD09BC -:10AE60006091F6097091F7098091F8099091F909BC -:10AE7000DF93CF93812C912CA0E8AA2EAFE3BA2EBA -:10AE80000F941A070F94901D0F900F900F900F9032 -:10AE90008091811A882331F181E00F94098782E043 -:10AEA0000F943C84E091460AF0E0EE0FFF1FED584E -:10AEB000FA4B859194910F94B2491092390A1092ED -:10AEC0003A0A1092380A1092370ADF91CF911F91F7 -:10AED0000F91FF90EF90DF90CF90BF90AF909F9039 -:10AEE0008F9008958091390A8823B1F2E091460A43 -:10AEF000F0E0EE0FFF1FEF58F74B8591949141E082 -:10AF000060E00F94F68891E0811101C090E0C2EEFC -:10AF1000D9E09111C1CF81E00F94098782E00F94AD -:10AF20003C8420E030E048EC51E46091020A7091EA -:10AF3000030A8091040A9091050A0F9496BF6093CA -:10AF4000020A7093030A8093040A9093050AE09022 -:10AF5000FE09F090FF090091000A1091010A20916A -:10AF6000FA093091FB094091FC095091FD0960916B -:10AF7000F6097091F7098091F8099091F909DF932A -:10AF8000CF93812C912CE0E8AE2EEFE3BE2EF2E0C1 -:10AF9000CF2EFAE0DF2E0F941A070F94901DE09148 -:10AFA000460AF0E0EE0FFF1FEF58F74B85919491A2 -:10AFB00041E060E00F94F6880F900F9081116CCF04 -:10AFC000AACFCF93DF9384E998E00E945744E7E14A -:10AFD000F7E4C591D491FE018491882321F00E9469 -:10AFE000F5462196F8CF4091B10F5091B20F609184 -:10AFF000B30F7091B40F4F5F5F4F6F4F7F4F2AE0D9 -:10B0000030E084E998E00E9416458AE00E94F54607 -:10B010000F9498B76093A8097093A9098093AA091F -:10B020009093AB09E7E7F7E4C591D491FE018491D1 -:10B03000882321F00E94F5462196F8CF8AE0DF911F -:10B04000CF910C94F546CF93DF930F9498B760930C -:10B05000A8097093A9098093AA099093AB09E0917C -:10B06000CB0FF091CC0FE353F04F8081813089F406 -:10B07000E7E7F7E4C591D491FE018491882321F09C -:10B080000E94F5462196F8CF8AE0DF91CF910C948B -:10B09000F546DF91CF9108958F929F92AF92BF9224 -:10B0A000CF92DF92EF92FF920F931F93CF93DF9394 -:10B0B000BBE5EB2EB5E0FB2E06EF19E0C1ECD9E0C5 -:10B0C00088E7C82E8AE0D82EF70181917F010E947F -:10B0D000BE46882319F10E94EC464B015C01F60143 -:10B0E0008081811103C06091AC0901C061E070E012 -:10B0F00080E090E00F9411C1F801208131814281FC -:10B1000053810F9444C39B01AC01C501B4010F945A -:10B1100096BF688379838A839B8309C0F801808105 -:10B120009181A281B38188839983AA83BB830C5FB9 -:10B130001F4F2496FFEFCF1ADF0A8FE5E81685E050 -:10B14000F80611F686E40E94BE468823D9F00E94D4 -:10B15000EC466B017C016093B1097093B209809356 -:10B16000B3099093B40920E030E0A9010F9472C2B2 -:10B17000181644F4C0920E02D0920F02E092100210 -:10B18000F0921102DF91CF911F910F91FF90EF90FC -:10B19000DF90CF90BF90AF909F908F9008957CDF0D -:10B1A00089E40E94BE46882359F00E94EC466093D1 -:10B1B000B5097093B6098093B7099093B80908C090 -:10B1C0001092B5091092B6091092B7091092B809F9 -:10B1D0008AE40E94BE46882359F00E94EC466093A0 -:10B1E000B9097093BA098093BB099093BC0908957B -:10B1F0001092B9091092BA091092BB091092BC09B9 -:10B200000895CF92DF92EF92FF92CF93DF93EC01FC -:10B21000BC016C5F7F4F0E94C54920E030E0A9016E -:10B2200060913E0270913F028091400290914102F4 -:10B230000F9496BF6B017C019B01AC0168857985F9 -:10B240008A859B850F946FC087FF04C0C886D98606 -:10B25000EA86FB86C0903202D0903302E09034023E -:10B26000F0903502A7019601688579858A859B85CE -:10B270000F9472C2181624F4C886D986EA86FB8613 -:10B28000DF91CF91FF90EF90DF90CF9008952F92B4 -:10B290003F924F925F926F927F928F929F92AF9266 -:10B2A000BF92CF92DF92EF92FF920F931F93CF93B3 -:10B2B000DF93CDB7DEB7AB970FB6F894DEBF0FBE06 -:10B2C000CDBF9F878E87798B688B5B8B4A8B3D8B3D -:10B2D0002C8B1F8B0E8BED82DC018D909D90AD90A1 -:10B2E000BC904090F6095090F7096090F809709072 -:10B2F000F909DB018D919D910D90BC91A02D88875E -:10B300009987AA87BB87C090FA09D090FB09E09083 -:10B31000FC09F090FD092091FE093091FF09409150 -:10B32000000A5091010AEA89FB896081718182815A -:10B3300093810F9495BF688F798F8A8F9B8F8091AF -:10B340000912811173C0AE89BF898D909D90AD9017 -:10B35000BC90EA89FB89E080F18002811381A88991 -:10B36000B9892D913D914D915C91EE85FF8560816C -:10B37000718182819381FE013596FF93EF93CC8892 -:10B38000DD880F941A07EE85FF8580819181A28167 -:10B39000B3818093F6099093F709A093F809B093CD -:10B3A000F909E889F98980819181A281B38180932B -:10B3B000FA099093FB09A093FC09B093FD09EA896F -:10B3C000FB8980819181A281B3818093FE09909352 -:10B3D000FF09A093000AB093010AEC89FD898081DE -:10B3E0009181A281B3818093020A9093030AA09372 -:10B3F000040AB093050A0F900F90AB960FB6F8941D -:10B40000DEBF0FBECDBFDF91CF911F910F91FF9097 -:10B41000EF90DF90CF90BF90AF909F908F907F90F4 -:10B420006F905F904F903F902F900895A3019201ED -:10B43000C501B4010F9495BF2B013C0120E030E021 -:10B44000A9010F9472C253014201181624F0B7FAF1 -:10B45000B094B7F8B094A7019601688579858A857C -:10B460009B850F9495BF688779878A879B8720E0A3 -:10B4700030E0A9010F9472C2288539854A855B8521 -:10B4800018160CF05058C501B4010F9496BF6B010B -:10B490007C0120E030E0A9010F9472C218160CF074 -:10B4A00052CF20E030E040EF51E4C701B6010F94E5 -:10B4B00076C00F945CC00F94DEC07D876C876230CD -:10B4C00071050CF440CF2091020A3091030A40919B -:10B4D000040A5091050AAC89BD896D917D918D91C9 -:10B4E0009C910F9495BF6C8F7D8F8E8F9F8F2224A0 -:10B4F0002394312C8C859D85AA2797FDA095BA2F82 -:10B5000088A799A7AAA7BBA7DE011596BF83AE831C -:10B51000B101882777FD8095982F0F9411C16B0199 -:10B520007C0168A579A58AA59BA50F9411C19B01F3 -:10B53000AC01C701B6010F9476C06B017C01EE89A6 -:10B54000FF8980809180A280B3802C8D3D8D4E8DAF -:10B550005F8D0F9444C39B01AC016091020A70910E -:10B56000030A8091040A9091050A0F9496BF69839B -:10B570007A838B839C83288D398D4A8D5B8DC7019F -:10B58000B6010F9444C32091FE093091FF09409108 -:10B59000000A5091010A0F9496BF68A379A38AA369 -:10B5A0009BA3288539854A855B85C701B6010F9421 -:10B5B00044C32091FA093091FB094091FC09509154 -:10B5C000FD090F9496BF6CA37DA38EA39FA3A30137 -:10B5D0009201C701B6010F9444C32091F60930913E -:10B5E000F7094091F8095091F9090F9496BFFF812E -:10B5F000FF932E812F93DE0111966D01E8A0F9A033 -:10B600000AA11BA12CA13DA14EA15FA10F941A0775 -:10B61000BFEF2B1A3B0A0F900F90EC85FD852E167D -:10B620003F0609F075CF8FCE4F925F926F927F9257 -:10B630008F929F92AF92BF92CF92DF92EF92FF9242 -:10B640000F931F93CF93DF93CDB7DEB728970FB635 -:10B65000F894DEBF0FBECDBF81EC99E0D2DD0F9430 -:10B6600098B76093A8097093A9098093AA09909349 -:10B67000AB098091C1099091C209A091C309B09111 -:10B68000C4098D839E83AF83B8879C01AD0160910F -:10B69000F6097091F7098091F8099091F9090F94D2 -:10B6A0006FC0811197C04090C5095090C609609045 -:10B6B000C7097090C809A30192016091FA097091BD -:10B6C000FB098091FC099091FD090F946FC08111D5 -:10B6D00081C020E030E040E752E460910E027091BA -:10B6E0000F0280911002909111020F9476C04B01CD -:10B6F0005C01E090C909F090CA090091CB09109152 -:10B70000CC0982EE99E09F938F932DECC22E29E015 -:10B71000D22EA30192016D817E818F8198850F9435 -:10B720001A070F900F908091C1099091C209A091C2 -:10B73000C309B091C4098093F6099093F709A093C7 -:10B74000F809B093F9098091C5099091C609A091B3 -:10B75000C709B091C8098093FA099093FB09A09397 -:10B76000FC09B093FD098091C9099091CA09A09183 -:10B77000CB09B091CC098093FE099093FF09A09367 -:10B78000000AB093010A8091CD099091CE09A09151 -:10B79000CF09B091D0098093020A9093030AA09335 -:10B7A000040AB093050A28960FB6F894DEBF0FBEC0 -:10B7B000CDBFDF91CF911F910F91FF90EF90DF9060 -:10B7C000CF90BF90AF909F908F907F906F905F9041 -:10B7D0004F900895E090E2096091580270915902EB -:10B7E000882777FD8095982F0F9411C120910E0224 -:10B7F00030910F0240911002509111020F9444C3F6 -:10B800002EE333EC4EE259E30F9444C369837A8309 -:10B810008B839C838E010F5F1F4F2DEC39E049EC29 -:10B8200059E065EC79E081EC99E031DD7CCF4F9215 -:10B830005F926F927F928F929F92AF92BF92CF92C0 -:10B84000DF92EF92FF920F931F93CF93C62FE09159 -:10B85000E209F0E0882309F4D9C0DF01A252B64F13 -:10B860008C918111AFC18091F6099091F709A09157 -:10B87000F809B091F9098093C1099093C209A09386 -:10B88000C309B093C4098091FA099091FB09A09172 -:10B89000FC09B091FD098093C5099093C609A09356 -:10B8A000C709B093C8098091FE099091FF09A09142 -:10B8B000000AB091010A8093C9099093CA09A09324 -:10B8C000CB09B093CC09C090020AD090030AE09053 -:10B8D000040AF090050AC092CD09D092CE09E092F8 -:10B8E000CF09F092D009EE0FFF1FEE0FFF1FEE5BA6 -:10B8F000FD4F2081318142815381662349F060915F -:10B90000220270912302809124029091250208C0A6 -:10B91000609126027091270280912802909129025D -:10B920000F9476C09B01AC01C701B6010F9496BF7E -:10B930006093020A7093030A8093040A9093050AA5 -:10B9400082E09AE00F94D01380900E0290900F0244 -:10B95000A0901002B090110220E030E040E752E4E5 -:10B9600060911E0270911F0280912002909121022D -:10B970000F9444C360930E0270930F0280931002E1 -:10B9800090931102E091E209F0E0E252F64F81E07B -:10B9900080834ADE2091DA093091DB094091DC098D -:10B9A0005091DD096091FE097091FF098091000AB4 -:10B9B0009091010A0F9495BF7B018C016093FE0961 -:10B9C0007093FF098093000A9093010A2091FA096D -:10B9D0003091FB094091FC095091FD096091F609F5 -:10B9E0007091F7098091F8099091F909E2E0CE2E63 -:10B9F000EAE0DE2E0F945B1217DE80920E02909228 -:10BA00000F02A0921002B0921102DCC0E252F64F77 -:10BA10008081882309F4D6C08090F6099090F709B8 -:10BA2000A090F809B090F9098092C1099092C209DA -:10BA3000A092C309B092C4094090FA095090FB0942 -:10BA40006090FC097090FD094092C5095092C609AA -:10BA50006092C7097092C8096091FE097091FF0950 -:10BA60008091000A9091010A6093C9097093CA09F4 -:10BA70008093CB099093CC090091020A1091030A9C -:10BA80002091040A3091050A0093CD091093CE0944 -:10BA90002093CF093093D0092091DA093091DB0946 -:10BAA0004091DC095091DD090F9496BF7B018C0118 -:10BAB0006093FE097093FF098093000A9093010A36 -:10BAC00032E0C32E3AE0D32EA3019201C501B401A6 -:10BAD0000F945B121091E209CC2389F02091D209D6 -:10BAE0003091D3094091D4095091D5096091220237 -:10BAF00070912302809124029091250210C0209120 -:10BB0000D6093091D7094091D8095091D90960914F -:10BB100026027091270280912802909129020F94A9 -:10BB200096BF24E0129FF0011124EE5BFD4F2081AF -:10BB30003181428153810F9476C09B01AC016091A9 -:10BB4000020A7091030A8091040A9091050A0F94E9 -:10BB500095BF6093020A7093030A8093040A90933E -:10BB6000050A82E09AE00F94D013C0900E02D090A4 -:10BB70000F02E0901002F090110220E030E040E768 -:10BB800052E460911A0270911B0280911C02909104 -:10BB90001D020F9444C360930E0270930F028093B2 -:10BBA000100290931102E091E209F0E0E252F64FA8 -:10BBB00010823ADDC0920E02D0920F02E092100283 -:10BBC000F0921102CF911F910F91FF90EF90DF90B3 -:10BBD000CF90BF90AF909F908F907F906F905F902D -:10BBE0004F900895AF92BF92CF92DF92EF92FF9263 -:10BBF0000F931F93CF93DF93D82F2091B9093091E2 -:10BC0000BA094091BB095091BC096091B509709186 -:10BC1000B6098091B7099091B8090F947FC2C62FD9 -:10BC2000172F082FF92E609158027091590288271A -:10BC300077FD8095982F0F9411C120910E023091BD -:10BC40000F0240911002509111020F9444C320E062 -:10BC500030E040E752E40F9476C020E030E048EC5A -:10BC600052E40F9476C02091E2092F93DF93FF9264 -:10BC70000F931F93CF935B016C01B2E0EB2E01E0B9 -:10BC800020E045EB59E061EC79E086EF99E00E9415 -:10BC90008DFD8091C1099091C209A091C309B09115 -:10BCA000C4098093F6099093F709A093F809B0931B -:10BCB000F9098091C5099091C609A091C709B09171 -:10BCC000C8098093FA099093FB09A093FC09B093EB -:10BCD000FD098091C9099091CA09A091CB09B09141 -:10BCE000CC098093FE099093FF09A093000AB093BA -:10BCF000010A8091CD099091CE09A091CF09B09110 -:10BD0000D0098093020A9093030AA093040AB09387 -:10BD1000050A0F9498B76093A8097093A9098093B6 -:10BD2000AA099093AB090F900F900F900F900F906E -:10BD30000F90DF91CF911F910F91FF90EF90DF90C7 -:10BD4000CF90BF90AF900895CF93DF931F92CDB760 -:10BD5000DEB77C01EDEDFAE084918F01882349F094 -:10BD600069830E94F5460F5F1F4FF8018491698136 -:10BD7000F5CF70E04AE050E084E998E00E94444545 -:10BD8000F8940F943B27179A1092E709169A10928D -:10BD9000E809149AEAE1FFE084918F01882339F0E1 -:10BDA0000E94F5460F5F1F4FF8018491F7CFE5E938 -:10BDB000F8E405911491F8018491882329F00E94F8 -:10BDC000F5460F5F1F4FF7CF8AE00E94F546E1145A -:10BDD000F10499F0F70184918701882339F00E94DA -:10BDE000F5460F5F1F4FF8018491F7CF8AE00E945C -:10BDF000F546C7010E94DC4A06C0EDEFF7E48591E5 -:10BE000094910F94DC49789406E010E001501109F8 -:10BE100051F068EC70E080E090E00F94C7B780E0EC -:10BE20000F943C84F3CFF894A895FECFCF93DF9383 -:10BE30000F943B2780919609811136C081E0809351 -:10BE400096098091B10F9091B20FA091B30FB0916C -:10BE5000B40F8093AD0F9093AE0FA093AF0FB0933C -:10BE6000B00FEAE1FFE08491EF01882331F00E94F6 -:10BE7000F5462196FE018491F8CFEBE8F8E4C591F0 -:10BE8000D491FE018491882321F00E94F5462196E9 -:10BE9000F8CF8AE00E94F546E1E2F6E485919491BC -:10BEA000DF91CF910D94B249DF91CF9108958091A8 -:10BEB00096090895FF920F931F93CF93DF93EC01A0 -:10BEC0008091E2098093970984E50E94BE46811122 -:10BED00002C080E06AC00E94EC460F94E3C0F62ED8 -:10BEE000609397096623A9F3E4E1FFE084918F0151 -:10BEF000882339F00E94F5460F5F1F4FF8018491A7 -:10BF0000F7CFCD36D10559F164F4C836D105A9F083 -:10BF1000C936D10509F03DC0EDEDF7E4C591D491E6 -:10BF200018C0CA3DD10529F1CD3DD10509F031C078 -:10BF3000EDECF7E4C591D49126C0EFEDF7E4C5919F -:10BF4000D491FE018491882321F10E94F546219627 -:10BF5000F8CF89918823E9F00E94F546FACFEBEDFE -:10BF6000F7E4C591D4918991882399F00E94F54610 -:10BF7000FACFEFECF7E4C591D4918991882349F089 -:10BF80000E94F546FACF8991882319F00E94F54660 -:10BF9000FACF6F2D70E04AE050E084E998E00E940B -:10BFA00028458AE00E94F54681E0DF91CF911F91FC -:10BFB0000F91FF9008954F925F926F927F928F92B0 -:10BFC0009F92AF92BF92CF92DF92EF92FF92CF9368 -:10BFD000DF9300D01F92CDB7DEB72B013C01298340 -:10BFE0003A834B835C838DEE9FE00F94EDCC8F3FC3 -:10BFF00001F58EEE9FE00F94EDCC8F3FD1F48FEEE4 -:10C000009FE00F94EDCC8F3FA1F480EF9FE00F9461 -:10C01000EDCC8F3F71F440E050E0BA018DEE9FE02F -:10C020000F9411CD40E050E0BA0181EF9FE00F94F2 -:10C0300011CD81EF9FE00F94F5CC4B015C018DEEAB -:10C040009FE00F94F5CC6B017C0169817A818B8133 -:10C050009C812CE330E040E050E00F9446C5C20ED6 -:10C06000D31EE41EF51EB701A6018DEE9FE00F94CE -:10C0700011CDC301B20128EE33E040E050E00F944F -:10C0800046C5BA01A901480D591D6A1D7B1D81EFE6 -:10C090009FE00F9411CD10923F0A1092400A109227 -:10C0A000410A1092420A0F900F900F900F90DF916B -:10C0B000CF91FF90EF90DF90CF90BF90AF909F9087 -:10C0C0008F907F906F905F904F900895CF92DF9206 -:10C0D000EF92FF922091060A2223F1F020E030E057 -:10C0E00040E05FE30F9444C36B017C0120E030E04B -:10C0F000A9010F946FC0882379F0A7019601C701A9 -:10C10000B6010F9444C32BED3FE049E450E40F9493 -:10C1100044C39B01AC0104C020E030E040E85FE391 -:10C1200060E070E080E89FE30F9476C0FF90EF90AE -:10C13000DF90CF9008956091460270914702809100 -:10C14000480290914902C2DF609342027093430219 -:10C1500080934402909345020895CF93DF93EC01BE -:10C160000F94112A81E01BD080E00F943C8420972B -:10C1700099F0C233D10540F062E370E080E090E0D6 -:10C180000F94C7B7E297ECCFBE0180E090E00F9428 -:10C19000C7B7C0E0D0E0E4CFDF91CF910895CF9250 -:10C1A000DF92EF92FF920F931F93CF93C82F80914E -:10C1B0006B022091C2118823F1F08091060288233E -:10C1C000D1F08091C611811116C08091DE1290913C -:10C1D000DD12891B8F7079F48091820A81110BC066 -:10C1E0008091750A811107C08091851A9091861AF5 -:10C1F000089709F067C021110E9403CD8091C70FF5 -:10C200009091C80F039714F40E9428C70F9498B711 -:10C210000091A4091091A5092091A6093091A709C0 -:10C22000C090A809D090A909E090AA09F090AB09A4 -:10C230006C197D098E099F0906171707280739070A -:10C2400040F4012B022B032B21F064E083EB95E0FB -:10C250007BDD40910A0250910B0260910C027091BB -:10C260000D02452B462B472B21F10F9498B70091D7 -:10C27000A8091091A9092091AA093091AB09601B66 -:10C28000710B820B930B00910A0210910B0220910B -:10C290000C0230910D02061717072807390748F4DA -:10C2A0009091DE128091DD12981303C0CC2309F423 -:10C2B00070C0CF911F910F91FF90EF90DF90CF90C2 -:10C2C0000D944805222309F461C00E940ACD8823F9 -:10C2D00009F494CF20E030E04EE353E46091731909 -:10C2E0007091741980917519909176190F9472C29A -:10C2F0001816CCF40E9403CD20E030E0A90168EECE -:10C3000073E084E50F94F0BB82E390E026DF84E5E0 -:10C310000F9414BF81E08093390A61E084EE9AE0C3 -:10C320000E9480C66BCF80E00F9409870F94594814 -:10C3300040E060E080E09AE10E945240E091460ACD -:10C34000F0E0EE0FFF1FE556F74B859194910F94A7 -:10C35000FF5B42E060E080E09AE10E945240E091A1 -:10C36000460AF0E0EE0FFF1FED5BF84B85919491CC -:10C370000F94FF5B60ED77E080E090E00F94C7B72B -:10C380000F94594881E00F94098738CF0E94E5CC7B -:10C3900035CF179A1092E709169A1092E809149A65 -:10C3A00088CF2F923F924F925F926F927F928F929F -:10C3B0009F92AF92BF92CF92DF92EF92FF920F9334 -:10C3C0001F93CF93DF934B015C01CC24CA94DC2CE8 -:10C3D000760156ED252E5AE0352E02ED1AE068EE74 -:10C3E000462E63E0562E612C712C8091D10981116B -:10C3F00012C12FEFC216D206E206F20651F0F7FC88 -:10C400000AC10F9498B76C197D09683B7B4008F00E -:10C4100002C10F9498B7681979098A099B09693E86 -:10C4200073408105910508F470C08091811A8111D3 -:10C4300068C0EAEDFAE08491EF01882331F00E94B0 -:10C44000F5462196FE018491F8CFE091970924E00A -:10C45000E29FF0011124ED58F64E40815181628136 -:10C46000738121E030E084E998E00E94F945F10110 -:10C470008491C6EDDAE0882331F00E94F5462196DA -:10C48000FE018491F8CF6091970970E04AE050E096 -:10C4900084E998E00E942845F8018491C2EDDAE031 -:10C4A000882331F00E94F5462196FE018491F8CF51 -:10C4B000F7FE03C0CDEDD7E01BC00F9498B74B013A -:10C4C0005C01C701B6016854744F8F4F9F4F6819C4 -:10C4D00079098A099B09A30192010F9446C5BA0103 -:10C4E000A9012AE030E084E998E00E94164506C0E0 -:10C4F0008991882319F00E94F546FACF8AE00E94BC -:10C50000F5460F9498B74B015C010F94112A80E017 -:10C5100046DE80E00F943C84FFEFCF16DF06EF0687 -:10C52000FF0609F042C080919509E0919709F0E07B -:10C53000EF01CC0FDD1FCC0FDD1FCD58D64EEE0F17 -:10C54000FF1FE558F64E608171818823B9F0882776 -:10C5500077FD8095982F0F9411C120E030E040E8DE -:10C560005FE30F9495BF9B01AC01688179818A815B -:10C570009B810F9472C287FF49C037CF882777FD10 -:10C580008095982F0F9411C120E030E040E85FE3E0 -:10C590000F9496BF9B01AC01688179818A819B8150 -:10C5A0000F946FC0181694F520CFF7FC1ECFE091C2 -:10C5B0009709F0E0EF01CC0FDD1FCC0FDD1FCD5848 -:10C5C000D64EEE0FFF1FE558F64E60817181882729 -:10C5D00077FD8095982F0F9411C19B01AC01688164 -:10C5E00079818A819B810F9495BF0F94DEC097FF5C -:10C5F00007C090958095709561957F4F8F4F9F4FA5 -:10C6000066307105810591050CF4EFCE0F9498B753 -:10C610006B017C01EACEDF91CF911F910F91FF90CA -:10C62000EF90DF90CF90BF90AF909F908F907F90D2 -:10C630006F905F904F903F902F9008950F931F93AE -:10C64000CF93DF931F921F92CDB7DEB7BE016F5F0E -:10C650007F4F88EF9FE00F94A84889819A81815687 -:10C66000904F803A9F4000F11A821982E9EAFAE07D -:10C6700084918F01882339F00E94F5460F5F1F4F88 -:10C68000F8018491F7CF8AE00E94F546BE016F5F02 -:10C690007F4F88EF9FE00F9497488CE69AE00F94C5 -:10C6A000EC9381E00F9409870F900F90DF91CF9169 -:10C6B0001F910F9108952F923F924F925F926F9228 -:10C6C0007F928F929F92AF92BF92CF92DF92EF9222 -:10C6D000FF920F931F93CF93DF93CDB7DEB7CA5866 -:10C6E000D2400FB6F894DEBF0FBECDBFC958DD4FA4 -:10C6F000688379838A839B83C757D240FE01E75FB3 -:10C70000FD4F88E2DF011D928A95E9F7E850F2407B -:10C7100080E991E0DF019C011D9221503040E1F75A -:10C72000C75ADD4F19821882C955D240CE01875AA7 -:10C730009D4F5C014E019FE6891A9EEF990ADE012A -:10C74000AF51BE4F3D0190EBC92E9FE0D92E23E2A1 -:10C75000E22EF12C00E010E0C359DD4F8882CD5667 -:10C76000D240CD58DD4F9882C357D240B7018827B9 -:10C7700077FD8095982F0F9411C1D3016D937D9310 -:10C780008D939D933D01F501619171915F01882722 -:10C7900077FD8095982F0F9411C1D4016D937D93EF -:10C7A0008D939D934D010F5F1F4F0630110559F07A -:10C7B000B501C6010F94A848B5E0EB0EF11CE2E00C -:10C7C000CE0ED11CD3CFCF51DE4F288139814A8183 -:10C7D0005B81C15ED140C958DD4F688179818A8112 -:10C7E0009B81C757D2400F946FC087FD2BC3FE01BA -:10C7F000EF51FE4F7F016E01FFE2CF1AFEEFDF0A1D -:10C800003E012BEB621A2DEF720AC359DD4F0881EE -:10C81000CD56D240CD58DD4F1881C357D24085E068 -:10C8200090E0CF58DD4F99838883C157D240CF58CD -:10C83000DD4FA881B981C157D2401197CF58DD4F44 -:10C84000B983A883C157D240F70120893189428931 -:10C85000538964897589868997890F9495BF4B019F -:10C860005C01D80150962D913D914D915C9153976B -:10C8700054966D917D918D919C9157970F9495BF92 -:10C88000A50194010F9476C0F6019293829372935E -:10C8900062936F01D301BE92AE929E928E923D0141 -:10C8A00004501109B4E0EB1AF108CF58DD4FE881CC -:10C8B000F981C157D240EF2B09F0B9CF6E01FFECDF -:10C8C000CF1AFDEFDF0A3E0127E4621A2EEF720A4B -:10C8D0002E013DE3430E511CCE0101967C0101E087 -:10C8E00010E0D6018D909D90AD90BC90139714965A -:10C8F0002D913D914D915C911797C501B4010F9415 -:10C9000096BF9B01AC010F9496BFF70164A775A772 -:10C9100086A797A70130110541F080A691A6A2A68F -:10C92000B3A684829582A682B7820F5F1F4FD30180 -:10C9300014962D913D914D915C91179718966D919C -:10C940007D918D919C911B970F9495BF20E030E0D5 -:10C9500040EC50E40F9444C3F201608371838283FE -:10C960009383F4E0CF0ED11C2CE2E20EF11C34E0F4 -:10C97000630E711C88E2480E511C0530110509F048 -:10C98000B0CF8E010B5A1F4F6E0191E5C90ED11C1D -:10C9900022242394312C2C0E3D1EA8ED2A0E311C8E -:10C9A000F801B8972081318142815381F80160817B -:10C9B0007181828193810F9476C04B015C01E12CDF -:10C9C000F12C3601F8E26F1A710826014E0C5F1C3B -:10C9D000F301EE0DFF1D2481358146815781C5018C -:10C9E000B4010F9444C39B01AC01D20114966D9124 -:10C9F0007D918D919C9117970F9495BFF20164835F -:10CA0000758386839783F4E0EF0EF11C24E1E21630 -:10CA1000F104D9F6045D1F4F38E2C30ED11C021594 -:10CA2000130509F0BDCF1E0185EB280E311C6E01E8 -:10CA300091EBC90ED11C3E01A7EE6A1AADEF7A0A3E -:10CA400014E0E12EF12C270100E010E0812C912C64 -:10CA5000A12CB12CF601E00FF11FD301A00FB11FE3 -:10CA60002D913D914D915C91608171818281938185 -:10CA70000F9444C39B01AC01B401C5010F9496BF50 -:10CA80004B015C01BFEF4B1A5B0A0C5F1F4FE5E0E7 -:10CA90004E165104F9F69B01AC01D1016D917D91C7 -:10CAA0008D919C910F9495BFF60120813181428137 -:10CAB00053810F9476C0D3016D937D938D939C9396 -:10CAC0001397B1E0EB1AF108E8E22E1A3108FCE204 -:10CAD000CF1AD10824E0621A7108E114F10409F0B8 -:10CAE000B2CFCB50DE4F88819981AA81BB81C55FCF -:10CAF000D140C957DD4F88839983AA83BB83C75828 -:10CB0000D2408E01075F1D4FDE01AF5CBD4FC5589F -:10CB1000DD4FB983A883CB57D240C359DD4F28805E -:10CB2000CD56D240CD58DD4F3880C357D240FE019C -:10CB3000EF51FE4FC358DD4FF983E883CD57D24004 -:10CB4000C358DD4FA881B981CD57D240CD90DD903B -:10CB5000ED90FD90C358DD4FB983A883CD57D240E7 -:10CB6000C958DD4F288139814A815B81C757D2403E -:10CB7000C701B6010F946FC01816B4F0C358DD4F4B -:10CB8000E881F981CD57D2402081318142815381A2 -:10CB9000C958DD4F688179818A819B81C757D2400E -:10CBA0000F946FC01816FCF4CF58DD4F28813981DF -:10CBB000C157D2402430310509F01FC1C957DD4F9C -:10CBC000288139814A815B81C758D240C958DD4FDD -:10CBD000688179818A819B81C757D2400F9472C244 -:10CBE00018160CF00AC1D80114968D919D910D90E4 -:10CBF000BC91A02DC158DD4F88839983AA83BB8344 -:10CC0000CF57D240F8014080518062807380C55870 -:10CC1000DD4FA881B981CB57D2408D919D910D9068 -:10CC2000BC91A02DC359DD4F88839983AA83BB8310 -:10CC3000CD56D240D1018D919D910D90BC91A02DEA -:10CC4000CD57DD4F88839983AA83BB83C358D240D5 -:10CC5000A7019601C958DD4F688179818A819B813E -:10CC6000C757D2400F9495BFCD58DD4F6883798365 -:10CC70008A839B83C357D24020E030E040E450E4F5 -:10CC80000F94A7C36B017C01A3019201C158DD4F32 -:10CC9000688179818A819B81CF57D2400F9495BF5B -:10CCA0004B015C0120E030E040EC50E4C359DD4F23 -:10CCB000688179818A819B81CD56D2400F9444C38B -:10CCC0009B01AC01C501B4010F9476C0A701960188 -:10CCD0000F9444C36B017C0120E030E040E05FE34F -:10CCE000C301B2010F9444C34B015C01CD58DD4F29 -:10CCF000288139814A815B81C357D240CA01B90179 -:10CD00000F9444C39B01AC01C501B4010F9444C30B -:10CD10009B01AC01C701B6010F9496BF6B017C016A -:10CD2000CD57DD4F288139814A815B81C358D2407C -:10CD3000F10164817581868197810F9495BFC359F4 -:10CD4000DD4F288139814A815B81CD56D2400F94D5 -:10CD500076C04B015C01C359DD4F288139814A817E -:10CD60005B81CD56D240CA01B9010F9496BFA30191 -:10CD700092010F9444C32B013C01C359DD4F28811C -:10CD800039814A815B81CD56D240C158DD4F6881DF -:10CD900079818A819B81CF57D2400F9444C39B01F4 -:10CDA000AC01C301B2010F9496BF20E030E040EC2B -:10CDB00050E40F9476C09B01AC01C501B4010F94FF -:10CDC00095BFCD58DD4F288139814A815B81C3579A -:10CDD000D2400F9444C39B01AC01C701B6010F942C -:10CDE00096BFCD57DD4F288139814A815B81C35879 -:10CDF000D2400F9496BF4B015C01CF58DD4F288184 -:10CE00003981C157D2402F5F3F4FCF58DD4F398313 -:10CE10002883C157D2400C5F1F4FC558DD4F888112 -:10CE20009981CB57D2400496C558DD4F99838883AA -:10CE3000CB57D24094E0290E311C2530310509F042 -:10CE40007FCE04C0812C912CA12CB12CB401C50142 -:10CE5000C657DD4F0FB6F894DEBF0FBECDBFDF91D2 -:10CE6000CF911F910F91FF90EF90DF90CF90BF90E7 -:10CE7000AF909F908F907F906F905F904F903F907A -:10CE80002F900895CF92DF92EF92FF926B017C0179 -:10CE90008091730A8823A1F086EA9FE00F94EDCC7D -:10CEA000882371F0C701B60106DC20917218309119 -:10CEB000731840917418509175180F9476C003C080 -:10CEC00060E070E0CB01FF90EF90DF90CF9008958D -:10CED0004F925F926F927F928F929F92AF92BF928A -:10CEE000CF92DF92EF92FF920F931F93CF93DF9336 -:10CEF000CDB7DEB728970FB6F894DEBF0FBECDBF13 -:10CF00000F94901D80915802909159029093770A46 -:10CF10008093760AE091E209F0E0EE0FFF1FE558FA -:10CF2000F64E60817181882777FD8095982F0F9448 -:10CF300011C16093670A7093680A8093690A90939D -:10CF40006A0A8091E0099091E1099093660A8093C2 -:10CF5000650A0F9498B760934D0A70934E0A8093B8 -:10CF60004F0A9093500A8091F6099091F709A09189 -:10CF7000F809B091F90989839A83AB83BC838093C4 -:10CF8000550A9093560AA093570AB093580A4090B6 -:10CF9000FA095090FB096090FC097090FD094092DD -:10CFA000590A50925A0A60925B0A70925C0A809108 -:10CFB000FE099091FF09A091000AB091010A8D83AA -:10CFC0009E83AF83B88780935D0A90935E0AA09397 -:10CFD0005F0AB093600A6091020A7091030A80911F -:10CFE000040A9091050A6093610A7093620A809323 -:10CFF000630A9093640A20E030E040E85FE30F9416 -:10D0000095BF6093020A7093030A8093040A909379 -:10D01000050A82EE99E09F938F93812C912CB8ECB6 -:10D02000AB2EB3E4BB2E12E0C12E1AE0D12EED8060 -:10D03000FE800F811885A301920169817A818B811D -:10D040009C810F941A0720E030E040EA51E460919F -:10D05000FE097091FF098091000A9091010A0F94D6 -:10D0600096BF2B013C010F900F9020E030E042E58D -:10D0700053E40F9472C218164CF04092FE0950927D -:10D08000FF096092000A7092010A0CC080E090E0F3 -:10D09000A2E5B3E48093FE099093FF09A093000AF0 -:10D0A000B093010AE090FE09F090FF090091000A98 -:10D0B0001091010A2091FA093091FB094091FC0975 -:10D0C0005091FD096091F6097091F7098091F80976 -:10D0D0009091F909A2EE6A2EA9E07A2E7F926F92C2 -:10D0E000812C912CB0E7AB2EB1E4BB2EE2E0CE2E2A -:10D0F000EAE0DE2E0F941A0710927C1910927B1929 -:10D1000010927E1910927D191092801910927F1939 -:10D1100080E090E0A8E4B2E48093F6099093F709E8 -:10D12000A093F809B093F90980E090E0AEE3B3E48E -:10D130008093FA099093FB09A093FC09B093FD0931 -:10D14000E090FE09F090FF090091000A1091010A99 -:10D150007F926F92812C912CF8E4AF2EF2E4BF2ED7 -:10D160009C01AD01C501B4010F941A071092E109A9 -:10D170001092E0090F900F900F900F9028960FB625 -:10D18000F894DEBF0FBECDBFDF91CF911F910F91FD -:10D19000FF90EF90DF90CF90BF90AF909F908F90D7 -:10D1A0007F906F905F904F900D94901D0F931F9301 -:10D1B000CF93DF9300D01F92CDB7DEB7E091E209A5 -:10D1C00084E0E89FF0011124ED58F64E4081518132 -:10D1D00062817381E9E6FAE084918F01882379F016 -:10D1E00049835A836B837C830E94F5460F5F1F4FF0 -:10D1F000F80184917C816B815A814981EFCF22E0D3 -:10D2000030E084E998E00E94F945E5E6FAE084918F -:10D210008F01882339F00E94F5460F5F1F4FF801F8 -:10D220008491F7CF6091E20970E04AE050E084E930 -:10D2300098E00E942845E1E6FAE084918F01882376 -:10D2400039F00E94F5460F5F1F4FF8018491F7CF28 -:10D2500040915D1950915E1960915F19709160194C -:10D2600021E030E084E998E00E94F9458AE00F90DF -:10D270000F900F900F90DF91CF911F910F910C9411 -:10D28000F546CF93DF93CDB7DEB761970FB6F8942D -:10D29000DEBF0FBECDBF0F9498B76D877E878F8797 -:10D2A000988B2091820A298B179A1092E709169A77 -:10D2B0001092E809149A64E182E00F94043864E162 -:10D2C00082E00F94353864E183E00F94043864E120 -:10D2D00083E00F94353883E40F94D43A98878F8392 -:10D2E0004090A90F5090AA0F6090AB0F7090AC0FB8 -:10D2F0000F945E14481A590A610871080E94E8CB1D -:10D30000481A590A6108710877FE03C0412C512C54 -:10D3100032019091DE128091DD12981799F0E09120 -:10D32000DD1282E5E89FF0011124E152FD4E20E07C -:10D3300030E040E752E462A173A184A195A10F946B -:10D3400044C308C060910E0270910F0280911002D8 -:10D35000909111020F94DEC07E836D830F949F0520 -:10D3600083E00F94FF1DAB01BC018EE69FE00F949C -:10D3700011CD60917B0A81E0682782E79FE00F94DE -:10D38000FFCC0E9446C51092820A789420E030E0DB -:10D3900040E85FE36091020A7091030A8091040AF9 -:10D3A0009091050A0F9495BF69837A838B839C8340 -:10D3B000E090FE09F090FF090091000A1091010A27 -:10D3C0002091FA093091FB094091FC095091FD0927 -:10D3D0006091F6097091F7098091F8099091F90927 -:10D3E000E2EE2E2EE9E03E2E3F922F92812C912CE0 -:10D3F000FEEBAF2EF2E4BF2EDE0111966D010F940D -:10D400001A070F94901D149A20E030E040E85FE383 -:10D410006091020A7091030A8091040A9091050AB2 -:10D420000F9495BF69837A838B839C8367E074E054 -:10D43000EF81F8856E1B7F0BA4E076956795AA9522 -:10D44000E1F780E090E00F940FC169877A878B87BE -:10D450009C872AE037ED43E25FE36091FE0970911B -:10D46000FF098091000A9091010A0F9496BF6B0109 -:10D470007C0120917218309173184091741850916A -:10D48000751869857A858B859C850F9476C09B017C -:10D49000AC01C701B6010F9496BF7B018C012091AE -:10D4A000FA093091FB094091FC095091FD09609106 -:10D4B000F6097091F7098091F8099091F9093F9266 -:10D4C0002F92812C912CB0E2AB2EB2E4BB2EDE0168 -:10D4D00011966D010F941A070F94901D149A20E075 -:10D4E00030E040E85FE36091020A7091030A8091A6 -:10D4F000040A9091050A0F9495BF69837A838B8300 -:10D500009C832AE037ED43E25FE36091FE0970916E -:10D51000FF098091000A9091010A0F9496BF6B0158 -:10D520007C012091721830917318409174185091B9 -:10D53000751869857A858B859C850F9476C09B01CB -:10D54000AC01C701B6010F9496BF7B018C012091FD -:10D55000FA093091FB094091FC095091FD09609155 -:10D56000F6097091F7098091F8099091F9093F92B5 -:10D570002F92FE0131966F010F941A070F94901DA0 -:10D58000149AB301A20181E99FE00F9411CD0F908D -:10D590000F900F900F900F900F9005E71FE0F12C68 -:10D5A00083E0E82E8F2D6E2D0F9412C52091091265 -:10D5B000222321F125E18202F001112483E0980267 -:10D5C000E00DF11D1124EE0FFF1FEE0FFF1FE75FAF -:10D5D000FD4E20E030E04AE754E4618172818381AE -:10D5E00094810F9444C320E030E040E05FE30F9467 -:10D5F00096BF0F944CC10F94DEC002C060E070E093 -:10D60000C8010F9419CDF3940E5F1F4F99E0F912E2 -:10D61000C9CF6F81788583E79FE00F9419CD409142 -:10D62000F6095091F7096091F8097091F9098DE9AF -:10D630009FE00F9411CD4091FA095091FB09609140 -:10D64000FC097091FD0981EA9FE00F9411CD409192 -:10D65000FE095091FF096091000A7091010A8DE85E -:10D660009FE00F9411CDBE016B5F7F4F89E89FE073 -:10D670000F949748E091E209F0E0EE0FFF1FE558A4 -:10D68000F64E60818CE89FE00F94FFCC6091791991 -:10D690008BE89FE00F94FFCC6091E00988E89FE061 -:10D6A0000F94FFCCA989AA2329F061E085EA9FE0C5 -:10D6B0000F94FFCC0F94901DECE5FAE084918F015C -:10D6C000882339F00E94F5460F5F1F4FF8018491BF -:10D6D000F7CF83E40F94D43A4AE050E0BC0184E9E8 -:10D6E00098E00E945F4584E69FE00F94EDCC61E0F6 -:10D6F000680F84E69FE00F94FFCCE1E5FAE08491A7 -:10D700008F01882339F00E94F5460F5F1F4FF80103 -:10D710008491F7CF8AE00E94F5460F9498B7AB0149 -:10D72000BC018D859E85AF85B889481B590B6A0B56 -:10D730007B0B2AE030E084E998E00E946B45F89486 -:10D740001A821982809101018460809301019FB740 -:10D75000F894809102018460809302019FBF1A8235 -:10D76000198289819A81803D974038F4000089812F -:10D770009A8101969A838983F4CF9FB7F894809118 -:10D7800002018B7F809302019FBF9FB7F894809125 -:10D7900002018B7F809302019FBF1A8219828981C7 -:10D7A0009A8180349F4188F7000089819A8101968F -:10D7B0009A838983F4CF6F987798EAE6F0E08081C6 -:10D7C0008F7B8083808180688083EF9A08951F9289 -:10D7D0000F920FB60F9211240BB60F920F931F9357 -:10D7E0002F933F934F935F936F937F938F939F9369 -:10D7F000AF93BF93EF93FF938091E0099091E1097C -:10D800008B3491050CF441C080916A0086FF0BC0F7 -:10D810000F9498B76093490A70934A0A80934B0A11 -:10D8200090934C0A2CC00F9498B70091490A10911C -:10D830004A0A20914B0A30914C0A601B710B820BF3 -:10D84000930B2091E0093091E109253631052CF048 -:10D8500003E010E020E030E004C004E010E020E04D -:10D8600030E0601771078207930748F08091280A1B -:10D870009091290A02969093290A8093280A809110 -:10D880006A0090E4892780936A00FF91EF91BF912D -:10D89000AF919F918F917F916F915F914F913F9148 -:10D8A0002F911F910F910F900BBE0F900FBE0F90F5 -:10D8B0001F9018956C987498EAE6F0E0808181607A -:10D8C000808380818D7F8083EC9A08951F920F92D0 -:10D8D0000FB60F9211240BB60F922F933F934F93D5 -:10D8E0005F936F937F938F939F93AF93BF93CF93E8 -:10D8F000DF93EF93FF93EC98ECE4FAE08491EF016F -:10D90000882331F00E94F5462196FE018491F8CFDC -:10D910008AE00E94F5468091820A8111B2DCFF9173 -:10D92000EF91DF91CF91BF91AF919F918F917F91B7 -:10D930006F915F914F913F912F910F900BBE0F9080 -:10D940000FBE0F901F9018954F925F926F927F922B -:10D950008F929F92BF92CF92DF92EF92FF920F939E -:10D960001F93CF93DF93CDB7DEB7EA970FB6F89446 -:10D97000DEBF0FBECDBF88E89FE00F94EDCCB82E80 -:10D98000BE01675C7F4F89E89FE00F94A848E7E0FD -:10D99000F9E084918F01882339F00E94F5460F5FEA -:10D9A0001F4FF8018491F7CF69AD7AAD4AE050E09E -:10D9B00084E998E00E9444458AE59FE00F94EDCC0D -:10D9C000882E912C4AE050E0B40184E998E00E944E -:10D9D00044450AE01FE0E12CF12C3E01F4E36F0E18 -:10D9E000711CE814F9042CF5FE01BC962F016801A6 -:10D9F000C6010F94EDCCF20181932F01FFEFCF1AF6 -:10DA0000DF0A46145704A1F71CAABE01645D7F4FCC -:10DA100084E998E00E943345BE01645D7F4F80E851 -:10DA20009AE00E9406C38FEFE81AF80A085F1F4FBA -:10DA3000D8CF8E01015E1F4F95E9E92E9FE0F92EA8 -:10DA4000D02EC12EC7010F94EDCCF80181938F0128 -:10DA5000FFEFEF1AFF0A8DE9E8168FE0F80691F75D -:10DA60001FA20D2D1C2DF80181918F01882319F023 -:10DA70000E94F546F8CF62E079E08D2D9C2D0F9441 -:10DA800091C8CF92DF928BEF98E09F938F938E0196 -:10DA90000F5F1F4F1F930F930F94C1CA0F900F90EA -:10DAA0000F900F900F900F907E01F5E0EF0EF11C9C -:10DAB000F7018081882349F0992787FD90950F947D -:10DAC00080C8F70181937F01F3CF60E0C8010E9415 -:10DAD000BCC581E99FE00F94F5CCF62EE72ED82E39 -:10DAE000C92EE0EEF8E084914F01882341F00E94B6 -:10DAF000F546FFEF8F1A9F0AF4018491F6CF2AE0D2 -:10DB000030E04F2D5E2D6D2D7C2D84E998E00E9434 -:10DB10006B4561E08CED98E00E94BCC567ED78E054 -:10DB2000C8010F949CC88DE99FE00F94F5CC6DABB4 -:10DB30007EAB8FAB98AFCE01C5960F94ED4DBC0177 -:10DB4000C8010F942BC964ED78E0C8010F9491C807 -:10DB500081EA9FE00F94F5CC6DAB7EAB8FAB98AFB5 -:10DB6000CE01C5960F94ED4DBC01C8010F942BC991 -:10DB70006DEC78E0C8010F9491C860E0C8010E9484 -:10DB8000BCC568EC78E0C8010F949CC88DE89FE0A4 -:10DB90000F94F5CC6DAB7EAB8FAB98AFCE01C59635 -:10DBA0000F94ED4DBC01C8010F942BC960E0C80172 -:10DBB0000E94BCC561E08BEB98E00E94BCC58AADB9 -:10DBC0008F9389AD8F9384EB98E09F938F931F93EE -:10DBD0000F930F94C1CA60E0C8010E94BCC582E7E0 -:10DBE0009FE00F94EDCC0F900F900F900F900F903F -:10DBF0000F90882329F061E080EB98E00E94BCC57B -:10DC000069EA78E0C8010F949CC88B2D90E09EAB28 -:10DC10008DABCE01C5960F94C250BC01C8010F94C4 -:10DC20002BC960E0C8010E94BCC5CF92DF92EF9281 -:10DC3000FF9280EA98E09F938F931F930F930F9426 -:10DC4000C1CA60E0C8010E94BCC561E08CE998E0EF -:10DC50000E94BCC50FB6F894DEBF0FBECDBFEA96DA -:10DC60000FB6F894DEBF0FBECDBFDF91CF911F91ED -:10DC70000F91FF90EF90DF90CF90BF909F908F908B -:10DC80007F906F905F904F9008954F925F926F9248 -:10DC90007F92AF92BF92CF92DF92EF92FF920F935B -:10DCA0001F93CF93DF93CDB7DEB7E0970FB6F8940D -:10DCB000DEBF0FBECDBF2B013C0169017A0180910F -:10DCC00035098111E5C0F8940F943E148091A90F95 -:10DCD0009091AA0FA091AB0FB091AC0F8093310936 -:10DCE00090933209A0933309B09334090F945E14D2 -:10DCF0004091310950913209609133097091340992 -:10DD0000481B590B6109710940933109509332093D -:10DD100060933309709334090E94E8CB4091310934 -:10DD2000509132096091330970913409481B590BA5 -:10DD300061097109409331095093320960933309A5 -:10DD4000709334099091DE128091DD12981799F04A -:10DD5000E091DD1282E5E89FF0011124E152FD4ED1 -:10DD600020E030E040E752E462A173A184A195A1D4 -:10DD70000F9444C308C060910E0270910F0280910D -:10DD800010029091110260931D0970931E098093F7 -:10DD90001F09909320090F949F0580E1E6EFF9E0B9 -:10DDA000A1E2B9E001900D928A95E1F78091E20934 -:10DDB00080931C098091090280931B090E9446C52B -:10DDC0001092820A81E080933509789420E030E057 -:10DDD000A901C301B2010F946FC081110AC020E0F4 -:10DDE00030E0A901C701B6010F946FC0882309F480 -:10DDF0004FC067E978E0FE0131965F01CF010F94D3 -:10DE00009CC8F50101900020E9F78F01015011092C -:10DE10002091290930912A0940912B0950912C0910 -:10DE2000C301B2010F9496BF23E048E00F94BFC531 -:10DE300064E978E0C5010F9491C8F50101900020D4 -:10DE4000E9F78F010150110923E046E0C701B6014F -:10DE50000F94BFC561E978E0C5010F9491C8F50141 -:10DE600001900020E9F78F010150110960916202D1 -:10DE700070916302809164029091650223E048E012 -:10DE80000F94BFC560E0C5010E94BCC50E941BC7BE -:10DE9000E0960FB6F894DEBF0FBECDBFDF91CF91F5 -:10DEA0001F910F91FF90EF90DF90CF90BF90AF90B8 -:10DEB0007F906F905F904F90089520E030E0A9012F -:10DEC00060E070E080E291E4E0CE8F929F92AF92AA -:10DED000BF92CF92DF92EF92FF920F931F93CF9357 -:10DEE000DF9300D01F92CDB7DEB79B01AC018091CC -:10DEF0003509882309F49FC080911C098093E209A9 -:10DF000080911D0990911E09A0911F09B0912009CF -:10DF100080930E0290930F02A0931002B09311020F -:10DF200060912D0970912E0980912F0990913009EF -:10DF30000F9495BF69837A838B839C83CE0101966E -:10DF40000F94D01320E030E040E551E4609162028C -:10DF50007091630280916402909165020F9476C083 -:10DF60004B015C01E0902909F0902A0900912B09EE -:10DF700010912C09209125093091260940912709FB -:10DF800050912809609121097091220980912309FB -:10DF900090912409E2EEF9E0FF93EF93EDE2CE2EAB -:10DFA000E9E0DE2E0F941A070F94901D80E1E1E264 -:10DFB000F9E0A6EFB9E001900D928A95E1F780E1D2 -:10DFC000E6EFF9E0A1ECB9E001900D928A95E1F756 -:10DFD00040913109509132096091330970913409AF -:10DFE0004093900D5093910D6093920D7093930D0B -:10DFF0008BED9CE00E941CAB80913109909132091D -:10E00000A0913309B09134098093A90F9093AA0F7E -:10E01000A093AB0FB093AC0F81E08093820A109273 -:10E0200035098DE898E09F938F930F9414CA0F9051 -:10E030000F900F900F900F900F900F900F90DF9117 -:10E04000CF911F910F91FF90EF90DF90CF90BF90F5 -:10E05000AF909F908F90089560E070E0CB0135CF36 -:10E06000FBDF81E08093B10208952F923F924F929F -:10E070005F926F927F928F929F92AF92BF92CF9258 -:10E08000DF92EF92FF920F931F93CF93DF93CDB761 -:10E09000DEB7C755D1090FB6F894DEBF0FBECDBFAE -:10E0A00082E090E090931802809317028EEF93E045 -:10E0B0000E9456468823B1F08091C10F9091C20F03 -:10E0C0006AE270E005960F9436C9009711F0DC0102 -:10E0D0001C928091C10F9091C20F05960F94A54993 -:10E0E0000C94F19A83E094E00E945646882321F034 -:10E0F0000E94634B0C94F19A82E194E00E94564690 -:10E10000882319F0ADDF0C94F19A80E294E00E942C -:10E110005646882321F00E94974B0C94F19A8DE289 -:10E1200094E00E945646882309F4A2C183E394E058 -:10E130000E945646882391F08091811A882311F419 -:10E140000C94F19A0F9498B760937C0A70937D0AAF -:10E1500080937E0A90937F0A0C94F19A88E394E06E -:10E160000E945646882361F06091430A7091440AE8 -:10E170004AE050E084E998E00E945F450C94F19AEF -:10E180008CE394E00E945646882309F442C000E4E0 -:10E1900014E0F80181918F01882319F00E94F5465F -:10E1A000F8CF8091220A9091230A2CE3289FB00196 -:10E1B000299F700D11244AE050E084E998E00E9404 -:10E1C000284564E474E084E998E00E94334509E45A -:10E1D00014E0D8018D918D01882319F00E94F54635 -:10E1E000F8CF8091240A9091250A2CE3289FB00152 -:10E1F000299F700D11244AE050E084E998E00E94C4 -:10E20000284564E474E084E998E00E9433450C9466 -:10E21000F19A8FE494E00E9456468823C1F08091E1 -:10E22000811A882361F060917F1A7091801A4AE008 -:10E2300050E084E998E00E9444450C94F19A62E52C -:10E2400074E084E998E00E9433450C94F19A84E6E6 -:10E2500094E00E945646882369F16091C10F709145 -:10E26000C20F6D5F7F4F21E041E080E89AE00E949D -:10E270005BBA8091E30C9091E40CA091E50CB09115 -:10E28000E60C8093900D9093910DA093920DB09316 -:10E29000930D8BED9CE00E9453AA8C010E94F546E1 -:10E2A0000A30110531F760E080E89AE00E94FAB97F -:10E2B0000C94F19A87E694E00E945646882399F0E0 -:10E2C0000E94D85381E08093450A6091C10F7091FC -:10E2D000C20F6C5F7F4F21E040E080E89AE00E942F -:10E2E0005BBA0C94F19A8BE694E00E945646882320 -:10E2F000D9F18091811A882309F4A1CF10921909CC -:10E300000EE614E0F80181918F01882319F00E9434 -:10E31000F546F8CF00E010E0FF24F3948091150952 -:10E32000909116092091170930911809821B930BBF -:10E330008F779927892B69F084E998E00E943B4404 -:10E34000F09219090E94F5460F5F1F4F10921909AC -:10E35000E5CF0331110514F381E0809319098AE0B8 -:10E360000E94F5460C94F19A81E794E00E9456468B -:10E37000882379F005E714E0D8018D918D01882379 -:10E3800019F00E94F546F8CF8AE00E94F5460C94F9 -:10E39000F19A8FE794E00E945646882351F003E8F3 -:10E3A00014E0F80181918F01882371F30E94F546F2 -:10E3B000F8CF81EA94E00E945646882321F00F941A -:10E3C00043490C94F19A86EA94E00E9456468823C9 -:10E3D00041F060E070E088EF9FE00F9497480C9464 -:10E3E000F19A89EA94E00E945646882359F069EA36 -:10E3F00074E084E998E00E94334540E052EC61E02B -:10E4000070E010C084EB94E00E945646882381F0AF -:10E4100064EB74E084E998E00E94334540E054E9FD -:10E4200061E170E084E998E00E94C0430C94F29BA3 -:10E4300080EC94E00E945646882361F00F9498B7D0 -:10E4400060936F0A7093700A8093710A9093720AB6 -:10E450000C94F19A85EC94E00E945646882311F4BE -:10E460000C94F19A61E080E00E94A24B0C94F19A26 -:10E470008EE50E94BE4681110C94F19A87E40E94B9 -:10E48000BE46882311F40C94E5800E94EC460F945C -:10E49000DEC06C34710509F411C47CF5643071057B -:10E4A00009F409C154F46230710509F4ECC00CF0B0 -:10E4B000F6C077FF78C00C94F19A6C31710509F4BD -:10E4C00051C17CF46A30710509F446C16B307105A5 -:10E4D00011F00C94F19A60E080E00E94175C0C94BB -:10E4E000F19A6E31710509F431C36B34710511F085 -:10E4F0000C94F19A08E210E0CEC36735710511F46F -:10E500000C94658014F56035710511F40C940B7B47 -:10E510006CF46F34710511F00C94F19A0FEF10E068 -:10E52000B3E3CB2EBCE0DB2E0C94E17A61357105B0 -:10E5300011F40C94B57F6635710511F00C94F19AC5 -:10E5400086EE0E94EA4A0C94F19A6C35710511F43A -:10E550000C946E807CF46A35710511F40C946A8019 -:10E560006B35710511F00C94F19A81E08093AC0940 -:10E570000C94F19A6236710511F40C94D0806336D4 -:10E58000710511F00C94F19A1092811A0F94484978 -:10E590006091811A84EC9FE00F94FFCC82E00F948D -:10E5A0003C840C94F19A8091960981110C94F19A13 -:10E5B0000E944C5860913F0A7091400A8091410A34 -:10E5C0009091420A0F940FC16B017C014090020AA6 -:10E5D0005090030A6090040A7090050A8090CD095B -:10E5E0009090CE09A090CF09B090D009A5019401D8 -:10E5F000C301B2010F9495BF20E030E048EC52E433 -:10E600000F9444C39B01AC01C701B6010F9472C2C1 -:10E610001816E4F4A3019201C501B4010F9495BF4B -:10E6200020E030E048EC52E40F9444C39B01AC017D -:10E63000C701B6010F9496BF0F94E3C060933F0AE1 -:10E640007093400A8093410A9093420A8091DF09B7 -:10E650008823A9F088E50E94BE46811110C089E593 -:10E660000E94BE4681110BC08AE50E94BE46811100 -:10E6700006C085E40E94BE4681110C94FA9A0E945D -:10E68000145B0C94F19A8091960981110C94F19A83 -:10E690000E94CF5881E00E94F25D0C94F19A809123 -:10E6A000960981110C94F19A0E94CF5880E00E9443 -:10E6B000F25D0C94F19A80E50E94BE46882339F001 -:10E6C0000E94EC460F94E3C06B017C0103C0C12C97 -:10E6D000D12C760183E50E94BE46882361F00E941A -:10E6E000EC4620E030E04AE754E40F9444C30F9432 -:10E6F000E3C06B017C01C114D104E104F10431F0E9 -:10E70000E7EAF8E4859194910F94B2490F94901D33 -:10E710000F9498B74B015C018C0C9D1CAE1CBF1C68 -:10E720000F9498B76093A8097093A9098093AA09D8 -:10E730009093AB090F9498B7681579058A059B05E6 -:10E7400010F00C94F19A0F94112A80E00E94CF608F -:10E7500080E00F943C84EECF60E081E00E94175C83 -:10E760000C94F19A0F94901D81E08093740A88E5CF -:10E770000E94BE46182F89E50E94BE46082F8AE5F2 -:10E780000E94BE46782E101308C0181711F0012FF2 -:10E7900004C07724739401E011E00E94D7DD6090FB -:10E7A00009121092091282E00F94FF1D6093FE0976 -:10E7B0007093FF098093000A9093010A71100E94E0 -:10E7C000DEFA40910E0250910F026091100270919A -:10E7D00011024093AD095093AE096093AF09709355 -:10E7E000B00980915802909159029093770A8093D2 -:10E7F000760A84E690E090935902809358020F9431 -:10E8000098B76093A8097093A9098093AA09909377 -:10E81000AB0981E00F94AB1580E1E6EFF9E0A1ECE4 -:10E82000B9E001900D928A95E1F710920E021092D4 -:10E830000F021092100210921102112321F080E0B9 -:10E8400090E00E94784F002321F081E090E00E9448 -:10E85000784F88E50E94BE46882341F00E94E14639 -:10E86000672B682B692B11F00C94299B89E50E947A -:10E87000BE46882341F00E94E146672B682B692B36 -:10E8800011F00C943F9B772009F4F1C08091E709C7 -:10E89000882321F08091E809811108C080E090E090 -:10E8A0000E94784F81E090E00E94784F0E942CDE19 -:10E8B000E2E2FAE485919591A591B49189839A83D6 -:10E8C000AB83BC83EEE1FAE485919591A591B49177 -:10E8D0008F8F98A3A9A3BAA325EC39E041EC59E0A6 -:10E8E000BE016F5F7F4FCE014F960E940B490E9481 -:10E8F0009EDD20E030E040E850EC6091C509709169 -:10E90000C6098091C7099091C8090F946FC087FF0D -:10E910000CC080E090E0A0E8B0EC8093C509909333 -:10E92000C609A093C709B093C80980E090E0A0EAA7 -:10E93000B0E48093C9099093CA09A093CB09B0931E -:10E94000CC0920E030E040E251E460916202709135 -:10E95000630280916402909165020F9476C0609387 -:10E960000E0270930F028093100290931102109286 -:10E97000FE091092FF091092000A1092010A80E02D -:10E980000F94AB15E090FE09F090FF090091000A8A -:10E990001091010A2091FA093091FB094091FC097C -:10E9A0005091FD096091F6097091F7098091F8097D -:10E9B0009091F909F2E0CF2EFAE0DF2E0F945B126E -:10E9C00080900E0290900F02A0901002B090110261 -:10E9D000E090C909F090CA090091CB091091CC09C7 -:10E9E0002091C5093091C6094091C7095091C809C5 -:10E9F0006091C1097091C2098091C3099091C409C5 -:10EA0000E2EEF9E0FF93EF93ADECCA2EA9E0DA2E27 -:10EA10000F941A070F94901D8091C1099091C2091B -:10EA2000A091C309B091C4098093F6099093F709A6 -:10EA3000A093F809B093F9098091C5099091C6098E -:10EA4000A091C709B091C8098093FA099093FB0976 -:10EA5000A093FC09B093FD0981E00F94AB150F94CE -:10EA6000931582E090E00E94784F0F900F908AE516 -:10EA70000E94BE46882341F00E94E146672B682B26 -:10EA8000692B11F00C94559BE090FE09F090FF0962 -:10EA90000091000A1091010A2091FA093091FB09B6 -:10EAA0004091FC095091FD096091F6097091F709B8 -:10EAB0008091F8099091F909E2E0CE2EEAE0DE2E8D -:10EAC0000F945B1280E00F94AB158091AD0990918B -:10EAD000AE09A091AF09B091B00980930E02909356 -:10EAE0000F02A0931002B09311028091760A9091C8 -:10EAF000770A90935902809358020F9498B76093C5 -:10EB0000A8097093A9098093AA099093AB090F945F -:10EB100093150E942CDE0E947EDF88E50E94BE468F -:10EB200081110C94BD9A89E50E94BE4681110C9416 -:10EB3000BD9A87E50E94BE4681110C94BD9A8AE574 -:10EB40000E94BE4681110C94BD9A61C50F94901D20 -:10EB500081E00E946A468091620290916302A091D6 -:10EB60006402B091650280930E0290930F02A0930D -:10EB70001002B093110220E030E043E060E070E06A -:10EB800080E291EC0E940DE0E9E4F9E40591149132 -:10EB9000F8018491882329F00E94F5460F5F1F4FEA -:10EBA000F7CFEAE2FDE084918F01882339F00E94DB -:10EBB000F5460F5F1F4FF8018491F7CF4091F6099A -:10EBC0005091F7096091F8097091F90925E030E05A -:10EBD00084E998E00E94F945E5E2FDE084918F0127 -:10EBE000882339F00E94F5460F5F1F4FF80184918A -:10EBF000F7CF4091FA095091FB096091FC0970919F -:10EC0000FD0925E030E084E998E00E94F945E0E262 -:10EC1000FDE084918F01882339F00E94F5460F5F53 -:10EC20001F4FF8018491F7CF4091FE095091FF09E1 -:10EC30006091000A7091010A25E030E084E998E0D3 -:10EC40000E94F945EEE1FDE084918F01882339F0BF -:10EC50000E94F5460F5F1F4FF8018491F7CF0E9485 -:10EC600098460C94F19AB801882777FD8095982FE3 -:10EC70000F9411C10E945B63AB01BC0122E030E044 -:10EC800084E998E00E94FA450F5F1F4F0F36110587 -:10EC900011F40C94F19A4AE050E0B80184E998E04C -:10ECA0000E94284531EDE32E37E0F32ED7018D91F8 -:10ECB0007D018823C1F20E94F546F8CF8091E709D3 -:10ECC000882341F08091E809882321F08091E909A7 -:10ECD000811109C00E941BC761E087E19DE00E948D -:10ECE00080C60C94F19A81E090E090931802809392 -:10ECF0001702E9EFFCE084918F01882339F00E942C -:10ED0000F5460F5F1F4FF8018491F7CF8AE00E940C -:10ED1000F5461A821982C0906D19D0906E19E09054 -:10ED20006F19F090701920E030E040EA50E4C7011C -:10ED3000B6010F9476C00F94DEC045E0469F900167 -:10ED4000479F300D1124B901882777FD8095982FB2 -:10ED50000F9411C12B013C0120E030E04CE052E463 -:10ED60000F946FC087FF06C0412C512C2CE0622EFF -:10ED700022E4722EA7019601C301B2010F946FC065 -:10ED800087FF0AC020E030E040EA50E4C301B2014E -:10ED90000F9496BF2B013C01E5EEFCE084918F01BE -:10EDA000882339F00E94F5460F5F1F4FF8018491C8 -:10EDB000F7CF22E030E0B301A20184E998E00E949D -:10EDC000FA4520E030E040EF51E4C301B2010F9476 -:10EDD00095BF20E030E04CE852E40F9496BF0F94CA -:10EDE000DEC070937A196093791984E090E0909373 -:10EDF000380A8093370A81E090E09093360A809336 -:10EE0000350AE091460AF0E0EE0FFF1FEF5EF94B86 -:10EE10008591949121E0892B09F420E020933A0A0E -:10EE200080E090E0A0EAB1E48093F6099093F709BE -:10EE3000A093F809B093F90980E090E0A0E7B2E46C -:10EE40008093FA099093FB09A093FC09B093FD0904 -:10EE50008AE999E9A9E1BEE38093FE099093FF094D -:10EE6000A093000AB093010A82EE99E09F938F93DA -:10EE7000812C912C18E4A12E12E4B12E02E0C02EB8 -:10EE80000AE0D02E1AE9E12E19E9F12E09E11EE37C -:10EE900020E030E040E752E460E070E080EA91E496 -:10EEA0000F941A070F94901D0F900F90A3019201D9 -:10EEB00060916D1970916E1980916F199091701910 -:10EEC0000F946FC087FF07C088EE93E00E94AD608B -:10EED0000E94D668EBCF60E086EA9FE00F94FFCCFB -:10EEE00080E090E0A0EAB0E48093FE099093FF09EF -:10EEF000A093000AB093010A2091FA093091FB090E -:10EF00004091FC095091FD096091F6097091F70953 -:10EF10008091F8099091F909E2EEF9E0FF93EF93FF -:10EF2000812C912CE8E4AE2EE2E4BE2EF2E0CF2E4E -:10EF3000FAE0DF2EE12CF12C00EA10E40F941A071E -:10EF4000EEE1FAE485919591A591B4918093F6094B -:10EF50009093F709A093F809B093F909E2E2FAE473 -:10EF600025913591459154912093FA093093FB09ED -:10EF70004093FC095093FD09E090FE09F090FF09D1 -:10EF80000091000A1091010A6091F6097091F70949 -:10EF90008091F8099091F909E2EEF9E0FF93EF937F -:10EFA000812C912CB8E4AB2EB2E4BB2E0F941A073F -:10EFB0000F94901D20E030E043E060E070E080E8D6 -:10EFC0009FEB0E940DE08091FE099091FF09A091B6 -:10EFD000000AB091010A8AAF9BAFACAFBDAFE4EEBF -:10EFE000FCE084910F900F900F900F908F01882379 -:10EFF00039F00E94F5460F5F1F4FF8018491F7CF5B -:10F000008AE00E94F546EDEDFCE084918F018823B3 -:10F0100039F00E94F5460F5F1F4FF8018491F7CF3A -:10F020004091FE095091FF096091000A7091010A18 -:10F0300022E030E084E998E00E94F945ECEDFCE044 -:10F0400084918F01882339F00E94F5460F5F1F4F8E -:10F05000F8018491F7CF8AE00E94F5462EEA222E2D -:10F060002FE0322E33E2E32EF12C0FEF1FEFB7012A -:10F07000882777FD8095982F0F9411C14B015C0173 -:10F08000E5EDFCE084916F01882341F00E94F54694 -:10F09000FFEFCF1ADF0AF6018491F6CF4AE050E085 -:10F0A000B8016E5F7F4F84E998E00E942845E8EC44 -:10F0B000FCE084916F01882341F00E94F546FFEF48 -:10F0C000CF1ADF0AF6018491F6CF8AE00E94F54656 -:10F0D000E4EBFCE084916F01882341F00E94F54647 -:10F0E000FFEFCF1ADF0AF6018491F6CF4AE050E035 -:10F0F000B70184E998E00E942845E5EAFCE08491A4 -:10F100006F01882341F00E94F546FFEFCF1ADF0A16 -:10F11000F6018491F6CF4AE050E060E070E084E9C7 -:10F1200098E00E942845E4EAFCE084916F0188237E -:10F1300041F00E94F546FFEFCF1ADF0AF6018491F5 -:10F14000F6CF8AE00E94F5460F3FFFEF1F0731F030 -:10F15000BE016F5F7F4FC1010F949748A5019401D5 -:10F16000C301B2010F946FC0181664F40F5F1F4FF4 -:10F1700025E0E20EF11C32E0230E311C05301105B2 -:10F1800009F075CF380147E2641A48EF740A660C3B -:10F19000771C280163E0460E511C85E0809FD0015A -:10F1A000819FB00D1124212C312C9D96B9AFA8AFB1 -:10F1B000C201029705970CF0BCC168AD79AD620D34 -:10F1C000731D882777FD8095982F0F9411C1229683 -:10F1D0006CAF7DAF8EAF9FAF2297EDE9FCE08491DD -:10F1E0008F01882339F00E94F5460F5F1F4FF80109 -:10F1F0008491F7CF4AE050E0B20184E998E00E94A0 -:10F200002845EAE9FCE084918F01882339F00E94C7 -:10F21000F5460F5F1F4FF8018491F7CF8AE00E94F7 -:10F22000F5465092360A4092350A20E030E040EF31 -:10F2300051E422966CAD7DAD8EAD9FAD22970F94BB -:10F2400095BF20E030E040E251E40F9444C320E059 -:10F2500030E040EA50E40F9476C020E030E048E42B -:10F2600052E40F9496BF0F94DEC070937A196093A6 -:10F27000791980E090E0A0EAB1E48093F6099093D8 -:10F28000F709A093F809B093F90980E090E0A0E7AE -:10F29000B2E48093FA099093FB09A093FC09B09320 -:10F2A000FD098AE999E9A9E1BEE38093FE099093FB -:10F2B000FF09A093000AB093010AA2EEB9E0BF9340 -:10F2C000AF93812C912CB8E4AB2EB2E4BB2E12E0AC -:10F2D000C12E1AE0D12E1AE9E12E19E9F12E09E129 -:10F2E0001EE320E030E040E752E460E070E080EAB6 -:10F2F00091E40F941A070F94901D0F900F9022968F -:10F300002CAD3DAD4EAD5FAD229760916D19709102 -:10F310006E1980916F19909170190F946FC087FFCB -:10F3200007C088EE93E00E94AD600E94D668E7CFE8 -:10F3300080E090E0A0EAB0E48093FE099093FF099A -:10F34000A093000AB093010A2091FA093091FB09B9 -:10F350004091FC095091FD096091F6097091F709FF -:10F360008091F8099091F909A2EEB9E0BF93AF93AB -:10F37000812C912C08E4A02E02E4B02EE2E0CE2EE7 -:10F38000EAE0DE2EE12CF12C00EA10E40F941A07DB -:10F39000EEE1FAE485919591A591B4918093F609F7 -:10F3A0009093F709A093F809B093F909E2E2FAE41F -:10F3B00025913591459154912093FA093093FB0999 -:10F3C0004093FC095093FD09E090FE09F090FF097D -:10F3D0000091000A1091010A6091F6097091F709F5 -:10F3E0008091F8099091F909A2EEB9E0BF93AF932B -:10F3F000812C912CA8E4AA2EA2E4BA2E0F941A070D -:10F400000F94901D20E030E043E060E070E080E881 -:10F410009FEB0E940DE02AAD3BAD4CAD5DAD609120 -:10F42000FE097091FF098091000A9091010A0F94E2 -:10F4300095BF2091721830917318409174185091B3 -:10F4400075180F9444C30F94DEC07A836983E9E989 -:10F45000FCE084910F900F900F900F908F01882304 -:10F4600039F00E94F5460F5F1F4FF8018491F7CFE6 -:10F470008AE00E94F546E5E8FCE084918F0188234C -:10F4800039F00E94F5460F5F1F4FF8018491F7CFC6 -:10F4900040916D1950916E1960916F1970917019AA -:10F4A00022E030E084E998E00E94F945E6E7FCE0DC -:10F4B00084918F01882339F00E94F5460F5F1F4F1A -:10F4C000F8018491F7CF2AAD3BAD4CAD5DAD6091B5 -:10F4D000FE097091FF098091000A9091010A0F9432 -:10F4E00095BFAB01BC0122E030E084E998E00E94C6 -:10F4F000F945E5E7FCE084918F01882339F00E940B -:10F50000F5460F5F1F4FF8018491F7CF8AE00E9404 -:10F51000F546BE016F5F7F4FC3010F949748F2E03D -:10F520006F0E711C2FEF421A520A35E0230E311C68 -:10F530003FCE1092380A1092370A10923A0A61E0D0 -:10F5400086EA9FE00F94FFCCE6E3FCE084918F0114 -:10F55000882339F00E94F5460F5F1F4FF801849110 -:10F56000F7CF8AE00E94F546179A1092E709169A9B -:10F570001092E809149A10927A1910927919E09170 -:10F58000460AF0E0EE0FFF1FE35FF94B859194917F -:10F590000F94EC9381E00F94098782E00F943C84F0 -:10F5A0000C94F19A6091240A7091250A4AE050E087 -:10F5B00084E998E00E9444450550110911F40C9427 -:10F5C000F19A1093E1090093E009A4E6EA2EF12CE8 -:10F5D00084E690E00E94AD60F1E0EF1AF108C1F717 -:10F5E0004AE050E0B80184E998E00E942845F6011D -:10F5F0008491F3E3EF2EFCE0FF2E882399F20E9422 -:10F60000F546FFEFEF1AFF0AF7018491F6CF0F944A -:10F61000901D1092740A81E08093480A86E50E944A -:10F62000BE46882359F0E091C10FF091C20F81814D -:10F63000893021F08F7D11F00E94D4462091E70996 -:10F640008091851A9091861A222341F02091E80931 -:10F65000222321F02091E90921110FC0029749F0DE -:10F660000E941BC761E08CE29CE00E9480C60C9463 -:10F67000F19A1092480A0C94F19A10921A09029782 -:10F6800021F41092480A0C94F19AF0913A0A2896C3 -:10F69000FFAF28972091370A3091380A2A963FAF5A -:10F6A0002EAF2A978091350A9091360A2C969FAFFB -:10F6B0008EAF2C9781E080933A0A81E090E090939E -:10F6C000380A8093370A83E190E09093360A80935A -:10F6D000350A81E00F943C8489E092E10E94A8FB06 -:10F6E0000E94DEFA80E090E0A0EAB0E48093FE0998 -:10F6F0009093FF09A093000AB093010A20E030E044 -:10F7000040E752E46091620270916302809164026A -:10F71000909165020F9476C04B015C012091FA092B -:10F720003091FB094091FC095091FD096091F60967 -:10F730007091F7098091F8099091F909E2EEF9E0EA -:10F74000FF93EF9312E0C12E1AE0D12EE12CF12CA1 -:10F7500000EA10E40F941A07EEE1FAE4859195911E -:10F76000A591B4918093F6099093F709A093F809B5 -:10F77000B093F909E2E2FAE485919591A591B491EB -:10F780008093FA099093FB09A093FC09B093FD09BB -:10F790006AEF79E086EF99E00E94C54920E030E009 -:10F7A00040EF51E460915A0270915B0280915C02DB -:10F7B00090915D020F9476C04B015C01E090FE09D0 -:10F7C000F090FF090091000A1091010A2091FA09B6 -:10F7D0003091FB094091FC095091FD096091F609B7 -:10F7E0007091F7098091F8099091F909E2EEF9E03A -:10F7F000FF93EF930F941A070F94901D20E030E0D1 -:10F8000040EA51E460915A0270915B0280915C027F -:10F8100090915D020F9476C00F94DEC08B0120E0C2 -:10F8200030E040E252E460916202709163028091A4 -:10F830006402909165020F9476C00F94DEC07B0144 -:10F840000E948ADD23968FAF239780E00E946A464C -:10F850000F900F900F900F90AEE1BAE4BBAFAAAF3C -:10F86000212C312CC701AA2797FDA095BA2F6096AD -:10F870008CAF9DAFAEAFBFAF6097C801AA2797FD11 -:10F88000A095BA2F64968CAF9DAFAEAFBFAF649713 -:10F89000C10163E070E00F9433C57FAF6EAF99AFE5 -:10F8A00088AF60FF06C0A2E0B0E0A81BB90BB9AFFB -:10F8B000A8AF2396BFAD2397BB2379F12114310460 -:10F8C00061F18EAD9FAD880F991FEEADFFAD8E0F2C -:10F8D0009F1F28AD39AD820F931F880F991F8D533D -:10F8E000904F0F94FACCBC01882777FD8095982F14 -:10F8F0000F9411C12AE037ED43E25CE30F9444C357 -:10F9000020910A1230910B1240910C1250910D125D -:10F910000F9496BF2B013C0103C0412C512C3201A6 -:10F9200080E090E0A0EAB0E48093FE099093FF09A4 -:10F93000A093000AB093010A60966CAD7DAD8EADC8 -:10F940009FAD60970F9411C127966CAF7DAF8EAFBE -:10F950009FAF27972091FA093091FB094091FC094C -:10F960005091FD096091F6097091F7098091F809AD -:10F970009091F909A2EEB9E0BF93AF9327968CACB2 -:10F980009DACAEACBFAC2797E2E0CE2EEAE0DE2E17 -:10F99000E12CF12C00EA10E40F941A070F94901D4B -:10F9A000EAADFBAD85919591A591B4918093F6094F -:10F9B0009093F709A093F809B093F909EAADFBAD6C -:10F9C000349685919591A591B4918093FA0990937D -:10F9D000FB09A093FC09B093FD096AEF79E086EF7B -:10F9E00099E00E94C54964966CAD7DAD8EAD9FAD2A -:10F9F00064970F9411C14B015C01E090FE09F090F7 -:10FA0000FF090091000A1091010A2091FA09309132 -:10FA1000FB094091FC095091FD096091F609709134 -:10FA2000F7098091F8099091F909A2EEB9E0BF9326 -:10FA3000AF930F941A070F94901D0F900F900F9093 -:10FA40000F902396FFAD2397FF2361F0211431041B -:10FA500049F020E030E040E85FE3C301B2010F94D9 -:10FA600095BF04C060E070E080E291EC20E030E0FF -:10FA700043E00E940DE0811108C0E091460AF0E0E9 -:10FA8000EE0FFF1FED5DF64B1FC0C090FE09D0903A -:10FA9000FF09E090000AF090010AA701960160E0DA -:10FAA00070E080EA90E40F9495BF2DEC3CEC4CECB8 -:10FAB0005DE30F946FC087FF0AC0E091460AF0E053 -:10FAC000EE0FFF1FE15EF64B6590749066C02396C3 -:10FAD0002FAD23972223B9F0A7019601C301B201EC -:10FAE0000F9495BF9F7720E030E040E85FE30F94EC -:10FAF00072C2181644F4E091460AF0E0EE0FFF1FC0 -:10FB0000E95DF64BE1CF60916D1970916E198091AE -:10FB10006F19909170190E9442679B01AC01A7E098 -:10FB20008EAD9FADA89F8001A99F100D1124E8AD57 -:10FB3000F9AD0E0F1F1F000F111F000F111F075FE0 -:10FB40001D4E6091FE097091FF098091000A90910D -:10FB5000010A0F9495BFD80111966D937D938D93F3 -:10FB60009C9314978091350A9091360A019790934F -:10FB7000360A8093350ABFEF2B1A3B0A81E00F94B7 -:10FB80003C84EAADFBAD3896FBAFEAAFF9E02F1647 -:10FB9000310409F07DCE612C712C80E090E0A0EA68 -:10FBA000B0E48093FE099093FF09A093000AB093FC -:10FBB000010A2091FA093091FB094091FC0950910A -:10FBC000FD096091F6097091F7098091F80990910B -:10FBD000F909E2EEF9E0FF93EF9327968CAC9DAC28 -:10FBE000AEACBFAC2797E2E0CE2EEAE0DE2EE12CF1 -:10FBF000F12C00EA10E40F941A070F94901D0F9057 -:10FC00000F9029E02216310421F060E0C3010C942A -:10FC1000E4860E9498460E94C6FA80EC9FE00F940A -:10FC2000EDCCA82ECE0101963C01B12C52E5952ECB -:10FC300066E4862E9CE499839A828B8282E48C838C -:10FC4000D3018D913D010E94BE46882319F00E9488 -:10FC5000E1461DC0B1E0AB1231C1BB1528F0B110B7 -:10FC600009C08FEB9FE00BC0E2E0BE1206C08DEB37 -:10FC70009FE005C08EEB9FE002C08CEB9FE00F94ED -:10FC8000EDCC682F772767FD7095872F972F61152B -:10FC900071058105910509F411C10F9411C12FE679 -:10FCA00032E143E85AE30F9444C36B017C019F7730 -:10FCB00027E139ED4EEC5DE30F9472C218160CF09B -:10FCC00033C0EAE1FFE084918F01882339F00E947C -:10FCD000F5460F5F1F4FF8018491F7CFE8E0FCE095 -:10FCE00084918F01882339F00E94F5460F5F1F4FE2 -:10FCF000F8018491F7CF22E030E0B701A60184E952 -:10FD000098E00E94F945EFEFFBE084918F01882392 -:10FD100039F00E94F5460F5F1F4FF8018491F7CF2D -:10FD20008AE00E94F546CAC0F2E0BF1609F469C035 -:10FD300023E0B21609F494C031E0B31689F120E053 -:10FD400030E040E05FE3C701B6010F9444C31B01FC -:10FD50002C010AE012E1A2019101D80114966D91E3 -:10FD60007D918D919C9117970F9496BFF8016483B4 -:10FD7000758386839783A701960160817181828153 -:10FD800093810F9496BFD8016D937D938D939C932F -:10FD90001397045E1F4FB2E10E351B07E1F68EC0CC -:10FDA00020E030E040E05FE3C701B6010F9444C3B8 -:10FDB0001B012C010EE012E1A2019101F80160810A -:10FDC0007181828193810F9496BFD8016D937D9349 -:10FDD0008D939C931397A701960114966D917D9135 -:10FDE0008D919C9117970F9496BFF801648375834A -:10FDF00086839783045E1F4FF2E102361F07E1F608 -:10FE00005DC020E030E040E05FE3C701B6010F9441 -:10FE100044C31B012C010AE012E1A2019101D801A7 -:10FE20005C966D917D918D919C915F970F9496BF9B -:10FE3000F801648F758F868F978FA7019601608177 -:10FE40007181828193810F9496BFD8016D937D93C8 -:10FE50008D939D938D01B2E106311B07F1F62EC003 -:10FE600020E030E040E05FE3C701B6010F9444C3F7 -:10FE70001B012C0106E212E1A2019101F80160814F -:10FE80007181828193810F9496BFD8016D937D9388 -:10FE90008D939D938D01A701960158966D917D914B -:10FEA0008D919C915B970F9496BFF801608F718F35 -:10FEB000828F938FF2E102331F07F1F6B39424E0AF -:10FEC000B212B8CE89E092E10E94C3FB81E0809338 -:10FED00009120E94F0F3E091E20934E0E39FF0019F -:10FEE0001124ED58F64E20E030E04EE353E46081FB -:10FEF0007181828193810F9472C2181694F480915B -:10FF0000730A882371F086EA9FE00F94EDCC882372 -:10FF100041F08091791990917A19C29714F00C945C -:10FF20006B9B81E090E090931802809317022896D3 -:10FF30004FAD289740933A0A2A968EAD9FAD2A97E7 -:10FF40009093380A8093370A2C96AEADBFAD2C97AC -:10FF5000B093360AA093350A1092480A1092470AC5 -:10FF600082E00F943C840C94F19A809109128823CA -:10FF700009F49CC0E5EFFBE084918F01882339F000 -:10FF80000E94F5460F5F1F4FF8018491F7CF4AE0BA -:10FF900050E067E070E084E998E00E942845E3EFD4 -:10FFA000FBE084918F01882339F00E94F5460F5FB2 -:10FFB0001F4FF8018491F7CF4AE050E067E070E00E -:10FFC00084E998E00E942845E0EEFBE084918F01EF -:10FFD000882339F00E94F5460F5F1F4FF801849186 -:10FFE000F7CF4AE050E065E070E084E998E00E94D5 -:10FFF0002845EEECFBE084918F01882339F00E94C4 -:020000021000EC -:10000000F5460F5F1F4FF8018491F7CF8AE00E94F9 -:10001000F54600E010E03BECA32E3BE0B32E49ECAC -:10002000842E4BE0942EE12CF12C98012F543D4E60 -:100030006901F50184912BEC622E2BE0722E88234E -:1000400041F00E94F546FFEF6F1A7F0AF301849199 -:10005000F6CFF601EE0DFF1D41815281638174815F -:1000600025E030E084E998E00E94F945F4E0EF0EE5 -:10007000F11C2CE1E216F104E1F6F401849199EC13 -:10008000E92E9BE0F92E882341F00E94F546FFEF10 -:10009000EF1AFF0AF7018491F6CF0C5111090C33C6 -:1000A000FFEF1F0709F0BFCF0C94F19AEBEAFBE0DA -:1000B00084918F01882311F40C94C4710E94F54639 -:1000C0000F5F1F4FF8018491F5CF81E00E94EA4A4B -:1000D0000C94F19A1092AC090C94F19A85E40E9468 -:1000E000BE46811102C00F94901D1BE5612E15E0E4 -:1000F000712E0AEE802E09E0902E86EFA82E89E060 -:10010000B82E512CD3018D913D010E94BE4688230B -:10011000D9F1B3E05B120CC00E94EC46F50160839C -:1001200071838283938382E09AE00F94D0132CC072 -:100130000E94EC46D4012D913D914D915C910F941C -:1001400096BFF5016083718382839383E090FE09FB -:10015000F090FF090091000A1091010A2091FA091C -:100160003091FB094091FC095091FD096091F6091D -:100170007091F7098091F8099091F909B2E0CB2EBE -:10018000BAE0DB2E0F945B125394F4E08F0E911CB7 -:1001900024E0A20EB11C34E05312B4CF0C94F19AB7 -:1001A00081E08093811A0F9498B760937C0A7093D2 -:1001B0007D0A80937E0A90937F0A6091811A84EC75 -:1001C0009FE00F94FFCC0C94F19A8DE40E94BE4600 -:1001D000882311F40C946799E091C10FF091C20F3C -:1001E000319681918032E9F38930D9F380538A3096 -:1001F00078F0ECE9FBE084918F01882311F40C94F2 -:10020000C4710E94F5460F5F1F4FF8018491F5CF2E -:100210000E94EC460F94DEC09B01693C710511F40D -:100220000C947F8E0CF0F5C06135710511F40C94BF -:10023000708A0CF073C06931710509F421C4B4F5FA -:100240006431710509F4D2C394F46131710509F484 -:10025000C1C334F46230710508F4FEC20C9458999D -:100260006231710511F40C949F8A0C94589966318F -:10027000710509F4E4C30CF4DCC36731710509F4BA -:10028000E4C36831710511F00C94589980E89AE044 -:100290000E940FB80F9498B76093A0097093A109BA -:1002A0008093A2099093A3090C94F19A6E31710581 -:1002B00009F42FC48CF46B31710509F4F5C30CF407 -:1002C000E5C36C31710509F4F5C36D31710511F4A5 -:1002D0000C94F19A0C9458996C32710509F440C54C -:1002E00054F46F31710509F4E2C46032710509F408 -:1002F00048C40C9458996D32710509F440C56F32A9 -:10030000710511F00C94589984E090E090931802D4 -:10031000809317020F946F600C94F19A6E367105FA -:1003200011F40C94768BACF56C35710511F40C94CA -:10033000F38AA4F46335710511F40C949A8A14F4C9 -:100340000C94968A6435710511F40C949F8A653576 -:10035000710511F40C94D88A0C9458996A36710579 -:1003600011F40C943A8A54F46836710509F40EC5F8 -:100370006936710509F43BC50C9458996B367105C3 -:1003800011F40C946A8A6D36710509F475C60C94E3 -:1003900058996737710511F40C94E88CDCF46137D7 -:1003A000710511F40C94898B4CF46037710511F0D0 -:1003B0000C94589963E083EB95E006C562377105AC -:1003C00011F40C94E38B6337710511F40C94AF8B2B -:1003D0000C9458996C38710509F4F8C47CF46837AA -:1003E000710511F40C94E38C6937710511F00C94CC -:1003F000589981E00F94AB150C94F19A6E3B7105FE -:1004000009F4E4C6683C710511F40C940A8E0C944E -:100410005899663FF1E07F0711F40C9435920CF087 -:100420008CC0603F710511F40C94F19A0CF03FC040 -:100430006F3C710511F40C946A8F2CF56C3C7105BE -:1004400011F40C94B98E6CF46B3C710511F00C94A2 -:1004500058990BE515E09AE7E92E98E1F92E0C94EE -:10046000AA8E6D3C710511F40C94DB8E6E3C710507 -:1004700011F00C9458990BE515E08AEEE82E89E00E -:10048000F82E0C945B8F613D710511F40C94C98FAB -:1004900014F40C94A18F6C3D710511F40C941E9012 -:1004A0006D3D710511F40C942F900C9458996033A4 -:1004B000A1E07A0711F40C944D91E4F46D32E1E07F -:1004C0007E0711F40C94919044F46C3241E074076F -:1004D00011F40C9459900C9458992E3261E036071F -:1004E00011F40C94E2912F32314011F40C94F191FB -:1004F0000C9458996039A1E07A0711F40C942A926F -:100500004CF46E5571406230710510F40C94F19A00 -:100510000C945899643FE1E07E0711F40C942E92FC -:10052000653FF1E07F0711F00C94589960E084E199 -:1005300090E00E94E3380C94F19A6E3843E074071F -:1005400011F40C940C982F3863E036070CF02DC191 -:100550002A3582E0380711F40C94D897F4F42D3F33 -:10056000A1E03A0711F40C94399254F4273F31403A -:1005700011F00C94589980E00E948D330C94F19AFC -:100580002835F2E03F0711F40C942A9329353240C4 -:1005900011F40C94CA970C945899233563E03607EC -:1005A00011F40C9457920CF0F3C02D3B92E03907F4 -:1005B00011F40C9455992E3B324011F00C9458993B -:1005C00050906B0210926B0281E080933A0A82E0B5 -:1005D00090E09093380A8093370AE091460AF0E061 -:1005E000EE0FFF1FE950FA4B859194910F94B24999 -:1005F00020E030E044E352E46091020A7091030A83 -:100600008091040A9091050A0F9495BF6093020AA5 -:100610007093030A8093040A9093050AE090FE0900 -:10062000F090FF090091000A1091010A2091FA0947 -:100630003091FB094091FC095091FD096091F60948 -:100640007091F7098091F8099091F909E2EE6E2E08 -:10065000E9E07E2E7F926F92812C912CFCEAAF2EE6 -:10066000F2E4BF2EA2E0CA2EAAE0DA2E0F941A07F7 -:100670000F94901D20E030E040E751E46091020AC1 -:100680007091030A8091040A9091050A0F9495BF16 -:100690006093020A7093030A8093040A9093050AF8 -:1006A000E090FE09F090FF090091000A1091010A04 -:1006B0002091FA093091FB094091FC095091FD0904 -:1006C0006091F6097091F7098091F8099091F90904 -:1006D0007F926F92812C912CA12CB0E4BB2E0F94B1 -:1006E0001A070F94901D20E030E040EA51E4609139 -:1006F000020A7091030A8091040A9091050A0F94EE -:1007000095BF6093020A7093030A8093040A909342 -:10071000050AE090FE09F090FF090091000A10918F -:10072000010A2091FA093091FB094091FC0950918E -:10073000FD096091F6097091F7098091F80990918F -:10074000F9097F926F92812C912CE6EAAE2EE2E4B9 -:10075000BE2E0F941A070F94901DE091460AF0E008 -:10076000EE0FFF1FED58FA4B859194910F94B2490B -:1007700010923A0A1092380A1092370A50926B027D -:100780000F900F900F900F900F900F900C94F19A84 -:100790002B38B3E03B0711F40C94E6972C38334028 -:1007A00011F40C94F19A0C9458992339F3E03F0713 -:1007B00011F40C947698D4F4203963E0360711F4E0 -:1007C0000C94419814F40C940F98213993E0390754 -:1007D00011F40C9473982239334011F00C94589909 -:1007E0001092D7190F9466380C94F19A2639B3E019 -:1007F0003B0711F40C9423996CF42439F3E03F0780 -:1008000011F40C947C982539334011F40C94F19830 -:100810000C945899203A63E0360709F41BC2273E2E -:10082000334011F00C945899109296090F94E149B5 -:100830008091AD0F9091AE0FA091AF0FB091B00F1E -:100840008093B10F9093B20FA093B30FB093B40FF6 -:100850000E94E1570C94F19A0091C10F1091C20FC0 -:100860000E5F1F4F80E50E94BE46882379F00E94EC -:10087000EC460F94E3C06B017C01BB24B39461157B -:1008800071058105910531F4B12C04C0B12CC12C46 -:10089000D12C760183E50E94BE46882399F00E9400 -:1008A000EC4620E030E04AE754E40F9444C30F9450 -:1008B000E3C06B017C01AA24A39461157105810535 -:1008C000910509F4A12C6AE270E0C8010F9436C9C1 -:1008D000009711F0DC011C92F801CF012191203228 -:1008E000E1F3B11007C0A11005C0222319F00F9445 -:1008F000A54906C0E9EEF5E4859194910F94B249BB -:1009000081E00F9485490F94901D0F9498B76093E0 -:10091000A8097093A9098093AA099093AB09C114FF -:10092000D104E104F104F1F00F9498B74B015C019C -:100930008C0C9D1CAE1CBF1C84E090E090931802B0 -:10094000809317020F9498B7681579058A059B055F -:1009500010F00C94AD9B0F94364B81110C94AD9B11 -:100960000C94B89B0F94344B882311F40C94F19A97 -:1009700084E090E090931802809317020F94364B16 -:10098000811109C00F94112A81E00E94CF6080E09C -:100990000F943C84F3CF82E090E090931802809310 -:1009A00017028091820AE091460AF0E0EE0FFF1FE5 -:1009B000882341F0E15FF84B859194910F94B249FF -:1009C0000C94F19AED58FA4B859194910F94B24999 -:1009D0000C94F19AEBE7F7E4859194910F94B24966 -:1009E00017981698159814980C94F19AE9EFF8E472 -:1009F00005911491F8018491882329F00E94F5460D -:100A00000F5F1F4FF7CF8AE00E94F54680E89AE01B -:100A10000E94C4B7EFE9F8E405911491F8018491BC -:100A2000882311F40C94C4710E94F5460F5F1F4F88 -:100A3000F5CF80E89AE00E942BC00C94F19A80E8F0 -:100A40009AE00E940BB80C94F19A8091C10F90919A -:100A5000C20F6AE270E004960F9436C9009711F055 -:100A6000DC011C926091C10F7091C20F6C5F7F4FCF -:100A700021E041E080E89AE00E945BBA0C94F19A90 -:100A800080E89AE00E9416B80C94F19A8091830A4B -:100A9000882311F40C94F19A83E50E94BE468111DB -:100AA0000C94C29B0C94F19A80E89AE00E9488B85A -:100AB0000C94F19A8091C10F9091C20F6AE270E09C -:100AC00004960F9436C98C010097A9F08091CB0F42 -:100AD0009091CC0F6EE470E08053904F0F9436C924 -:100AE00060E270E00F9436C901969093C20F809334 -:100AF000C10FF80110826091C10F7091C20F6C5F3D -:100B00007F4F21E040E080E89AE00E945BBA0C94BD -:100B1000F19A8091830A882311F40C94F19A60E091 -:100B200080E89AE00E94FAB98091C10F9091C20FBB -:100B30006AE270E004960F9436C98C010097A9F020 -:100B40008091CB0F9091CC0F6EE470E08053904F6A -:100B50000F9436C960E270E00F9436C90196909305 -:100B6000C20F8093C10FD8011C926091C10F709188 -:100B7000C20F6C5F7F4F80E89AE00E94DFC10C9447 -:100B8000F19A8091820A81110F94901D0091C10FFA -:100B90001091C20F0C5F1F4F6AE270E0C8010F9402 -:100BA00036C97C0161E270E0C8010F9436C9009734 -:100BB00019F08C010F5F1F4FE114F10411F0F701E0 -:100BC000108280E50E94BE46F82E2091C10F309120 -:100BD000C20F0217130708F4F12C8091830A8823AF -:100BE00011F40C94F19A21E02F2541E0B80180E83E -:100BF0009AE00E945BBA83E50E94BE468823B9F062 -:100C00002091C10F3091C20F2017310780F40E944C -:100C1000E146AB01BC014093900D5093910D609360 -:100C2000920D7093930D8BED9CE00E941CAB80E8BD -:100C30009AE00E940FB8F1100C94F19A0F9498B7B3 -:100C40006093A0097093A1098093A2099093A309CE -:100C50000C94F19A8091C10F9091C20F6AE270E0FA -:100C600005960F9436C98C010097A9F08091CB0F9F -:100C70009091CC0F6EE470E08053904F0F9436C982 -:100C800060E270E00F9436C901969093C20F809392 -:100C9000C10FD8011C926091C10F7091C20F6B5FA0 -:100CA0007F4F80E89AE00E9429BD0C94F19A0F943E -:100CB00098B760939C0970939D0980939E099093C7 -:100CC0009F090091A0091091A1092091A2093091DA -:100CD000A309601B710B820B930B28EE33E040E0FD -:100CE00050E00F9446C5CA01B9012CE330E040E062 -:100CF00050E00F9446C57F936F933F932F938DE8F9 -:100D00009BE09F938F93CE0101969F938F930F94B7 -:100D1000C1CAE4E1FFE084910FB6F894DEBF0FBED4 -:100D2000CDBF04E11FE0882339F00E94F5460F5F34 -:100D30001F4FF8018491F7CF8E010F5F1F4FD8012D -:100D40008D918D01882319F00E94F546F8CF8AE035 -:100D50000E94F546CE0101960F94A5490C94F19A94 -:100D60008FEF0E94EA4A60E070E088EF9FE00F9406 -:100D700019CD0E9444DD0E94D7DD0C94F19A8AE5DA -:100D80000E94BE460E94A0540C94F19A88E690E01E -:100D90000E945A5F81110C94F19A83E50E94BE462D -:100DA000882371F0009197090E94EC4610E0000F33 -:100DB000111F0558164E0F94DEC0F8017183608331 -:100DC0000F943A270C94F19A0E94A45E83E50E9446 -:100DD000BE46882311F40C94F19A0E94EC460F94BD -:100DE000DEC070937A19609379190C94F19A89E6B0 -:100DF00090E00E945A5F81110C94F19AE7E8FBE0C1 -:100E000084918F01882339F00E94F5460F5F1F4FB0 -:100E1000F8018491F7CFE091970924E0E29FF00177 -:100E20001124ED58F64E408151816281738121E099 -:100E300030E084E998E00E94F945E4E8FBE0849121 -:100E40008F01882339F00E94F5460F5F1F4FF8018C -:100E50008491F7CFE0919709F0E0EE0FFF1FE5587E -:100E6000F64E60817181882777FD8095982F0F94C9 -:100E700011C1AB01BC0121E030E084E998E00E949F -:100E8000F945E0E8FBE084918F01882339F00E9466 -:100E9000F5460F5F1F4FF8018491F7CF40915D1920 -:100EA00050915E1960915F197091601921E030E0F6 -:100EB00084E998E00E94F945EDE7FBE084918F0119 -:100EC000882339F00E94F5460F5F1F4FF801849187 -:100ED000F7CF6091791970917A19882777FD8095FD -:100EE000982F0F9411C1AB01BC0121E030E084E9DF -:100EF00098E00E94F945EAE7FBE084918F0188239E -:100F000039F00E94F5460F5F1F4FF8018491F7CF2B -:100F10004AE050E060E070E084E998E00E942845F3 -:100F2000E8E7FBE084918F01882339F00E94F546C1 -:100F30000F5F1F4FF8018491F7CF409173195091C3 -:100F40007419609175197091761921E030E084E987 -:100F500098E00E94F945E5E7FBE084918F01882342 -:100F600039F00E94F5460F5F1F4FF8018491F7CFCB -:100F700060917B1970917C19882777FD8095982F57 -:100F80000F9411C1AB01BC0121E030E084E998E08D -:100F90000E94F945E1E7FBE084918F01882339F055 -:100FA0000E94F5460F5F1F4FF8018491F7CF8091A3 -:100FB000970990E00F94E1244AE050E0BC0184E9F5 -:100FC00098E00E942845ECE6FBE084918F0188239D -:100FD00039F00E94F5460F5F1F4FF8018491F7CF5B -:100FE0008FEF9FEF0F94E1244AE050E0BC0184E9C9 -:100FF00098E00E942845E8E6FBE084918F01882371 -:1010000039F00E94F5460F5F1F4FF8018491F7CF2A -:1010100040916D1950916E1960916F19709170190E -:1010200021E030E084E998E00E94F945E4E6FBE045 -:1010300084918F01882339F00E94F5460F5F1F4F7E -:10104000F8018491F7CF4091671950916819609128 -:10105000691970916A1921E030E084E998E00E94F2 -:10106000F9458AE00E94F54681E090E090931802ED -:10107000809317020C94F29B8DE690E00E945A5FD9 -:1010800081110C94F19AE091460AF0E0EE0FFF1FF7 -:10109000E95DF74B859194910F94B24981E090E01E -:1010A00090933E0A80933D0A8091811A882321F013 -:1010B00081E090E00F94515683E50E94BE4688235C -:1010C00091F0009197090E94EC4610E0000F111F6B -:1010D0000558164E0F94DEC0D8016D937C9381E0C5 -:1010E0008093080215C082E50E94BE46882381F0E5 -:1010F000009197090E94EC4610E0000F111F05585F -:10110000164E0F94DEC0F8017183608310920802BE -:101110000F943A270F9498B76B017C0100919709BF -:1011200010E0F801EE0FFF1FE558F64E6081718167 -:10113000882777FD8095982F0F9411C1F801EE0F45 -:10114000FF1FEE0FFF1FED58F64E11E02081318199 -:10115000428153810F9472C218160CF010E0109364 -:10116000950981E090E09093180280931702109205 -:10117000D109C701B6010E94D161E091460AF0E0B1 -:10118000EE0FFF1FED5DF74B859194910F94B249DF -:1011900082E090E0909318028093170290933E0AA9 -:1011A00080933D0A8091811A882321F082E090E0AB -:1011B0000F9451560F9498B76093A8097093A9099A -:1011C0008093AA099093AB090C94F19AE091460A96 -:1011D000F0E0EE0FFF1FE55DF64B859194910F94C3 -:1011E000B24983E090E090933E0A80933D0A80915B -:1011F000811A882321F081E090E00F94515683E515 -:101200000E94BE46882361F00E94EC460F94DEC027 -:1012100070937A196093791981E0809308020FC066 -:1012200082E50E94BE46882351F00E94EC460F944E -:10123000DEC070937A1960937919109208020F94A6 -:1012400098B74B015C011092D109609179197091A6 -:101250007A19882777FD8095982F0F9411C111E096 -:1012600020915D1930915E1940915F19509160197C -:101270000F9472C218160CF010E01093950981E0DB -:1012800090E0909318028093170201E61BE0ADE511 -:10129000EA2EABE0FA2EB9E5CB2EBBE0DB2E809137 -:1012A00095096091791970917A19882309F4A8C079 -:1012B0008091D1098111A4C0882777FD8095982F4E -:1012C0000F9411C120915D1930915E1940915F1901 -:1012D000509160190F9472C218160CF0A8C00F94A8 -:1012E00098B7681979098A099B09693E7340810595 -:1012F000910508F47CC08091811A811174C0E0913D -:10130000E20924E0E29FF0011124ED58F64E4081FD -:10131000518162817381F8018491F1E6AF2EFBE087 -:10132000BF2E882301F165964FAF659766965FAF34 -:10133000669767966FAF679768967FAF68970E94CA -:10134000F546FFEFAF1ABF0AF501849168967FADAD -:10135000689767966FAD679766965FAD6697659677 -:101360004FAD6597DECF22E030E084E998E00E943F -:10137000F945F7018491EDE5AE2EEBE0BE2E882312 -:1013800041F00E94F546FFEFAF1ABF0AF5018491C4 -:10139000F6CF6091E20970E04AE050E084E998E01D -:1013A0000E942845F601849179E5A72E7BE0B72EAF -:1013B000882341F00E94F546FFEFAF1ABF0AF501FE -:1013C0008491F6CF40915D1950915E1960915F193B -:1013D0007091601921E030E084E998E00E94F945BD -:1013E0008AE00E94F5460F9498B74B015C010F9478 -:1013F000112A80E00E94CF6080E00F943C844FCFA0 -:10140000882777FD8095982F0F9411C120915D1941 -:1014100030915E1940915F19509160190F946FC01F -:1014200087FF05C080910802882309F458CFE09116 -:10143000460AF0E0EE0FFF1FE15DF64B85919491B7 -:101440000F94B24982E090E09093180280931702C3 -:1014500084E090E090933E0A80933D0A0F9498B701 -:101460006093A8097093A9098093AA099093AB0986 -:101470000C94F19A83E50E94BE46882319F10E94DC -:10148000EC4620E030E0A9010F946FC087FD0FC04B -:101490000E94EC4620E030E04FE753E40F9472C224 -:1014A000181644F00E94EC460F94DEC005C060E0C0 -:1014B00070E002C06FEF70E07093E1096093E009A3 -:1014C0000C94F19A8FEF90E09093E1098093E009FA -:1014D0000C94F19A1092E1091092E0090C94F19A9F -:1014E0000F943B270F94901D149A0F94121E109284 -:1014F000E1091092E00968EE73E080E090E00F945B -:10150000C7B710921902E9E7F7E44591549127E52E -:101510003BE065E57BE088EC94E00E9459CE0F94B7 -:10152000B24980E00F943C840C94F19A10927B0AAB -:101530000C94F19A81E080937B0A0C94F19A83E5F4 -:101540000E94BE46882399F00E94EC4620E030E0DD -:101550004AE754E40F9444C30F94E3C060930A0233 -:1015600070930B0280930C0290930D021DC088E5CE -:101570000E94BE4681110C94D39B89E50E94BE4611 -:1015800081110C94D39B8AE50E94BE4681110C9474 -:10159000D39B85E40E94BE4681110C94D39B0F948B -:1015A000901D149A0F94121E1092340A0C94F19A02 -:1015B00083E50E94BE46882311F40C94F19A0E94A0 -:1015C000EC4620E030E04AE754E40F9444C30F9423 -:1015D000E3C06093A4097093A5098093A609909332 -:1015E000A7090C94F19A2BE535E039AF28AF0AE64C -:1015F00018E14AE7C42E48E1D42E5AE2E52E58E11C -:10160000F52E312CA8ADB9AD8D91B9AFA8AF0E9420 -:10161000BE46882309F45CC0B3E03B1252C00E946E -:10162000EC462B013C0120E030E040EA51E40F940D -:101630006FC087FF3FC0A3019201F80160817181F3 -:10164000828193810F9476C04B015C019B01AC01B8 -:1016500060914A1870914B1880914C1890914D18D8 -:101660000F9444C360934A1870934B1880934C189E -:1016700090934D18A5019401D6016D917D918D91A6 -:101680009C910F9444C3F60160837183828393839A -:10169000D7016D917D918D919C910F940FC1A50102 -:1016A00094010F9444C30F94E3C0F70160837183E6 -:1016B00082839383D8014D925D926D927C921397B1 -:1016C00007C00E94EC46F801608371838283938394 -:1016D00033940C5F1F4FF4E0CF0ED11C24E0E20ED8 -:1016E000F11C34E033128ECF0C94F19A8EE40E94F8 -:1016F000BE46882311F40C94F19A0E94E14660934F -:10170000B10F7093B20F8093B30F9093B40F0C94FA -:10171000F19A83E50E94BE46882331F00E94D446A8 -:10172000809312020C94F19AE4E1FFE084918F011E -:10173000882339F00E94F5460F5F1F4FF80184910E -:10174000F7CF4091120250E060E070E08EE49BE041 -:101750000E94184B8AE00E94F5460C94F19A86E5A7 -:101760000E94BE46882371F00F94DBB38C01F80110 -:101770008491882311F40C94C4710E94F5460F5F84 -:101780001F4FF5CF85E50E94BE46882369F0809102 -:10179000C10F9091C20F01969093C20F8093C10F19 -:1017A0000F944CB60C94F19AE9EDF7E4059114917D -:1017B000F8018491882311F40C94F19A0E94F54663 -:1017C0000F5F1F4FF5CFEBE4FBE084918F0188237F -:1017D00039F00E94F5460F5F1F4FF8018491F7CF53 -:1017E0004091F6095091F7096091F8097091F90953 -:1017F00022E030E084E998E00E94F945E7E4FBE06C -:1018000084918F01882339F00E94F5460F5F1F4FA6 -:10181000F8018491F7CF4091FA095091FB0960914A -:10182000FC097091FD0922E030E084E998E00E9413 -:10183000F945E3E4FBE084918F01882339F00E94AD -:10184000F5460F5F1F4FF8018491F7CF4091FE09D5 -:101850005091FF096091000A7091010A22E030E086 -:1018600084E998E00E94F945EFE3FBE084918F0161 -:10187000882339F00E94F5460F5F1F4FF8018491CD -:10188000F7CF4091020A5091030A6091040A7091C7 -:10189000050A22E030E084E998E00E94F945E7EC8F -:1018A000F8E405911491F8018491882329F00E94AD -:1018B000F5460F5F1F4FF7CF0F94F11D0F9411C125 -:1018C00020916A1830916B1840916C1850916D18E6 -:1018D0000F9476C0AB01BC0122E030E084E998E0CF -:1018E0000E94F945EBE3FBE084918F01882339F0F6 -:1018F0000E94F5460F5F1F4FF8018491F7CF81E0FA -:101900000F94F11D0F9411C120916E1830916F1832 -:1019100040917018509171180F9476C0AB01BC01C2 -:1019200022E030E084E998E00E94F945E7E3FBE03B -:1019300084918F01882339F00E94F5460F5F1F4F75 -:10194000F8018491F7CF82E00F94F11D0F9411C13B -:101950002091721830917318409174185091751835 -:101960000F9476C0AB01BC0122E030E084E998E03E -:101970000E94F945E3E3FBE084918F01882339F06D -:101980000E94F5460F5F1F4FF8018491F7CF83E067 -:101990000F94F11D0F9411C1209176183091771892 -:1019A00040917818509179180F9476C0AB01BC0122 -:1019B00022E030E084E998E00E94F9458AE00E9444 -:1019C000F5460C94F19A80E00F94AB150C94F19AC3 -:1019D000E3EDF7E405911491F8018491882329F04F -:1019E0000E94F5460F5F1F4FF7CF8AE00E94F54631 -:1019F000E9E8F5E405911491F8018491882329F030 -:101A00000E94F5460F5F1F4FF7CF1E9B15C0E3EAFC -:101A1000F8E405911491F8018491882329F00E943B -:101A2000F5460F5F1F4FF7CF8AE00E94F546EBE8BF -:101A3000F5E4059114910DC0E1EAF8E405911491E3 -:101A4000F8018491882381F30E94F5460F5F1F4FB0 -:101A5000F7CFF8018491882329F00E94F5460F5FA3 -:101A60001F4FF7CF8091060182FF15C0E3EAF8E42B -:101A700005911491F8018491882329F00E94F5467C -:101A80000F5F1F4FF7CF8AE00E94F546EDE7F5E4C0 -:101A9000059114910DC0E1EAF8E405911491F80163 -:101AA0008491882381F30E94F5460F5F1F4FF7CF83 -:101AB000F8018491882329F00E94F5460F5F1F4F9B -:101AC000F7CF1D9B15C0E3EAF8E405911491F801E6 -:101AD0008491882329F00E94F5460F5F1F4FF7CFAE -:101AE0008AE00E94F546EFE7F5E4059114910DC0F8 -:101AF000E1EAF8E405911491F8018491882381F3D7 -:101B00000E94F5460F5F1F4FF7CFF801849188239D -:101B100029F00E94F5460F5F1F4FF7CF8091060115 -:101B200087FF15C0E3EAF8E405911491F801849168 -:101B3000882329F00E94F5460F5F1F4FF7CF8AE0F8 -:101B40000E94F546E7E7F5E4059114910DC0E1EA3E -:101B5000F8E405911491F8018491882381F30E949F -:101B6000F5460F5F1F4FF7CFF8018491882329F0C6 -:101B70000E94F5460F5F1F4FF7CF1C9B15C0E3EA8D -:101B8000F8E405911491F8018491882329F00E94CA -:101B9000F5460F5F1F4FF7CF8AE00E94F546E9E751 -:101BA000F5E4059114910DC0E1EAF8E40591149172 -:101BB000F8018491882381F30E94F5460F5F1F4F3F -:101BC000F7CFF8018491882329F00E94F5460F5F32 -:101BD0001F4FF7CF01990FC0E3EAF8E40591149184 -:101BE000F8018491882311F40C94C4710E94F54685 -:101BF0000F5F1F4FF5CFE1EAF8E405911491F8016A -:101C00008491882311F40C94C4710E94F5460F5FEF -:101C10001F4FF5CF8091E2098093970984E50E94D8 -:101C2000BE46882319F10E94EC460F94E3C06093EE -:101C300097096623D9F0E4E1FFE084918F018823BE -:101C400039F00E94F5460F5F1F4FF8018491F7CFDE -:101C5000E1EDF7E405911491D8018D918D01882370 -:101C600011F40C94F19A0E94F546F6CF84E40E9498 -:101C7000BE46882311F40C94F19A0E94EC4620E0B1 -:101C800030E0A9010F946FC0811103C01092060AC1 -:101C900032C00091970910E00E94EC46F801EE0F67 -:101CA000FF1FEE0FFF1FEA5BFD4F6083718382838E -:101CB0009383E0904602F090470200914802109111 -:101CC000490220E030E0A901B701C8010F946FC0BC -:101CD000811104C0E12CF12C00E410E4C701D8010B -:101CE0008093460290934702A0934802B093490222 -:101CF00081E08093060A0E949B600C94F19A0BE5A8 -:101D000015E02AE5E22E28E1F22EF80181918F01FB -:101D10000E94BE46882351F00E94EC460F94E3C017 -:101D2000D7016D937D938D939C931397B4E0EB0E45 -:101D3000F11CE5E00F351E0741F70F94F6130C94E4 -:101D4000F19AF4E0EF0EF11C25E00F35120711F4C3 -:101D50000C94F19AD8018D918D010E94BE46882382 -:101D600081F30E94EC46F701608371838283938341 -:101D7000E8CF83E50E94BE46882351F00E94EC46DE -:101D80006093521870935318809354189093551879 -:101D900084E50E94BE46882311F40C94F19A0E94B7 -:101DA000EC4660934E1870934F18809350189093A0 -:101DB00051180C94F19A83E50E94BE46882351F095 -:101DC0000E94EC46609356187093571880935818E9 -:101DD0009093591884E50E94BE46882351F00E94D2 -:101DE000EC4660933A1870933B1880933C1890939C -:101DF0003D1882E40E94BE46882361F00E94EC46B2 -:101E00000F94E3C060938A1870938B1880938C189A -:101E100090938D1888E50E94BE46882391F00E9419 -:101E2000EC46609342187093431880934418909343 -:101E3000451860933E1870933F1880934018909314 -:101E4000411889E50E94BE46882351F00E94EC4665 -:101E500060934218709343188093441890934518E8 -:101E60008AE50E94BE46882351F00E94EC466093AA -:101E7000461870934718809348189093491885E442 -:101E80000E94BE46882311F40C94F19A0E94EC46FD -:101E900060934A1870934B1880934C1890934D1888 -:101EA0000C94F19AF4E0EF0EF11C25E00E351207C8 -:101EB00011F40C94F19AD8018D918D010E94BE46C7 -:101EC000882381F30E94EC46F7016083718382834B -:101ED0009383E8CF83E50E94BE46882351F00E9499 -:101EE000EC46609326027093270280932802909319 -:101EF000290286E40E94BE46882381F00E94EC46B7 -:101F000020E030E040E752E40F9476C060931E0278 -:101F100070931F0280932002909321028AE50E9411 -:101F2000BE46882311F40C94F19A0E94EC4660930B -:101F3000DA097093DB098093DC099093DD090C9436 -:101F4000F19A83E50E94BE46882351F00E94EC4638 -:101F50006093D6097093D7098093D8099093D909D3 -:101F600086E40E94BE46882311F40C94F19A0E94E4 -:101F7000EC4620E030E040E752E40F9476C06093F6 -:101F80001A0270931B0280931C0290931D020C9402 -:101F9000F19A83E50E94BE46882311F40C94F19ACD -:101FA0000E94EC460F94DEC06115710551F061305E -:101FB000710569F481E08093DF091092DE090C94C9 -:101FC000F19A1092DF091092DE090C94F19AE4E183 -:101FD000FFE084918F01882339F00E94F5460F5F5E -:101FE0001F4FF8018491F7CFEBEFF5E405911491C1 -:101FF000F8018491882329F00E94F5460F5F1F4F56 -:10200000F7CF0091CB0F1091CC0F0053104FD80198 -:102010008D918D01882319F00E94F546F8CFEEE2EC -:10202000FBE084918F01882311F40C94C4710E9409 -:10203000F5460F5F1F4FF8018491F5CF83E50E94AD -:10204000BE46882311F40C94F19A0E94EC460F943A -:10205000DEC070935902609358020C94F19A83E5A4 -:102060000E94BE46882311F40C94F19A0E94EC461B -:102070000F94DEC06B017C0184E50E94BE4688237C -:1020800091F08DED90E00E945A5F81110C94F19ACD -:10209000E0919709F0E0EE0FFF1FEC5AFD4FD1825F -:1020A000C0820C94F19AD0925702C09256020C94BE -:1020B000F19A83E50E94BE46882331F00E94EC46E7 -:1020C0000F94DEC08B0102C00EE610E080E50E9496 -:1020D000BE46882331F00E94EC460F94DEC0CB014F -:1020E00002C088EE93E06C01EE24D7FCE094FE2C55 -:1020F0001016110684F420E030E0A901B80184E54F -:102100000F94F0BBC701B6010F94C7B784E50F94D5 -:1021100014BF0C94F19AC701B6010F94C7B70C9481 -:10212000F19A80E50E94BE46882351F00E94EC4659 -:102130006093AD027093AE028093AF029093B002B1 -:1021400089E40E94BE46882361F00E94EC460F9409 -:102150005A346093A9027093AA028093AB029093C1 -:10216000AC0284E40E94BE46882361F00E94EC46E3 -:102170000F9466346093A5027093A6028093A70221 -:102180009093A80283E40E94BE46882351F00E94E7 -:10219000EC466093A1027093A2028093A3029093F5 -:1021A000A4020F94B424E7E7F7E405911491F80131 -:1021B0008491882329F00E94F5460F5F1F4FF7CFC7 -:1021C00005ED14E0D8018D918D01882319F00E944E -:1021D000F546F8CF4091AD025091AE026091AF024A -:1021E0007091B00222E030E084E998E00E94F94565 -:1021F00009ED14E0F80181918F01882319F00E9404 -:10220000F546F8CF6091A9027091AA028091AB02C5 -:102210009091AC020F946034AB01BC0122E030E03D -:1022200084E998E00E94F9450DED14E0D8018D9104 -:102230008D01882319F00E94F546F8CF6091A50220 -:102240007091A6028091A7029091A8020F946C341D -:10225000AB01BC0122E030E084E998E00E94F9453E -:1022600001EE14E0F80181918F01882319F00E949A -:10227000F546F8CF4091A1025091A2026091A302CD -:102280007091A40222E030E084E998E00E94F945D0 -:102290008AE00E94F5460C94F19A80E50E94BE46C1 -:1022A000882351F00E94EC4660939D0270939E0239 -:1022B00080939F029093A00289E40E94BE468823E7 -:1022C00061F00E94EC460F945A3460939902709327 -:1022D0009A0280939B0290939C0284E40E94BE46E3 -:1022E000882361F00E94EC460F9466346093950257 -:1022F0007093960280939702909398020F94B4245F -:10230000E7E7F7E405911491F8018491882329F017 -:102310000E94F5460F5F1F4FF7CF05ED14E0D8017F -:102320008D918D01882319F00E94F546F8CF4091D8 -:102330009D0250919E0260919F027091A00222E046 -:1023400030E084E998E00E94F94509ED14E0F801D5 -:1023500081918F01882319F00E94F546F8CF609192 -:10236000990270919A0280919B0290919C020F9425 -:102370006034AB01BC0122E030E084E998E00E94C7 -:10238000F9450DED14E0D8018D918D01882319F0E8 -:102390000E94F546F8CF6091950270919602809167 -:1023A0009702909198020F946C34AB01BC0122E02B -:1023B00030E084E998E00E94F9458AE00E94F54601 -:1023C0000C94F19A83E50E94BE46882319F00E947E -:1023D000EC4603C060E070E0CB010F94ED130C9469 -:1023E000F19A85E40E94BE46882341F00E94EC46A3 -:1023F0000F94DEC08B0177FF03C009C000E010E03E -:10240000C12CD12CA6E1EA2EA3E4FA2E06C0C12CE1 -:10241000D12CFCE8EF2EF2E4FF2E83E50E94BE46AD -:10242000882321F00E94EC466B017C0183E40E942A -:10243000BE46882331F00E94EC460F94DEC09B011B -:1024400002C025E030E0A801C701B6010F948F2D2E -:102450000C94F19A0F94901D0C94F19A60E084E131 -:1024600090E00E9486320C94F19A0E945F370C949F -:10247000F19A0F944349E4E1FFE084918F018823AE -:1024800039F00E94F5460F5F1F4FF8018491F7CF96 -:10249000EEE1FBE084918F01882311F40C94F19A12 -:1024A0000E94F5460F5F1F4FF8018491F5CF8AE532 -:1024B0000E94BE46882309F498C00E94EC466B0136 -:1024C0007C0120E030E040E751EC0F9472C287FDC0 -:1024D00044C020E030E040EA50ECC701B6010F9460 -:1024E0006FC018160CF439C0F7FAF094F7F8F094AE -:1024F000C092E309D092E409E092E509F092E6097E -:10250000E4E1FFE084918F01882339F00E94F546D1 -:102510000F5F1F4FF8018491F7CFE7E7F7E445918C -:102520005491EBE7F5E4859194912DE13BE062ED68 -:1025300077E00E9459CE8C01F8018491882329F01C -:102540000E94F5460F5F1F4FF7CF8AE00E94F546C5 -:102550008AE00E94F5460C94F19AE4E1FFE0849150 -:102560008F01882339F00E94F5460F5F1F4FF80155 -:102570008491F7CFEBE7F5E405911491F80184918C -:10258000882329F00E94F5460F5F1F4FF7CFE7E73A -:10259000F5E405911491F8018491882329F00E94B3 -:1025A000F5460F5F1F4FF7CF4AE050E061EF7FEF36 -:1025B00084E998E00E942845E9E7F5E40591149143 -:1025C000F8018491882329F00E94F5460F5F1F4F80 -:1025D000F7CF4AE050E06BEF7FEF84E998E00E948C -:1025E00028458AE00E94F546FCC7E4E1FFE08491BB -:1025F0008F01882339F00E94F5460F5F1F4FF801C5 -:102600008491F7CFEBE7F5E48591949169E17BE064 -:102610000E9438CE8C01F8018491882329F00E9411 -:10262000F5460F5F1F4FF7CF8AE00E94F5464091B5 -:10263000E3095091E4096091E5097091E609705849 -:1026400022E030E084E998E00E94F9458AE00E94A7 -:10265000F546C7C730906B0210926B020F94901D25 -:102660008091811A882321F086E190E00F945156E1 -:10267000809158029091590290934B0280934A02A4 -:10268000C090F609D090F709E090F809F090F909A8 -:10269000CF8ED8A2E9A2FAA20091FA091091FB0903 -:1026A0002091FC093091FD090BA31CA32DA33EA38F -:1026B0004091FE095091FF096091000A7091010A52 -:1026C0004FA358A769A77AA78091020A9091030A9D -:1026D000A091040AB091050A8BA79CA7ADA7BEA73D -:1026E000C982DA82EB82FC820D831E832F833887B6 -:1026F00049875A876B877C878D879E87AF87B88B82 -:1027000085E40E94BE46882359F00E94EC469B0156 -:10271000AC016BA57CA58DA59EA50F9496BF0AC0A4 -:1027200020E030E040E050E46BA57CA58DA59EA59F -:102730000F9495BF6BA77CA78DA79EA7EFA0F8A4C9 -:1027400009A51AA52BA13CA14DA15EA16F8D78A171 -:1027500089A19AA1E2EEF9E0FF93EF93812C912CED -:10276000E8EEAE2EE2E4BE2EDE019B966D010F94E4 -:102770001A078AE50E94BE460F900F90882349F001 -:102780000E94EC469B01AC016FA178A589A59AA592 -:102790001EC020E030E040E050E46FA178A589A59C -:1027A0009AA50F9496BF6B017C016FA378A789A7A8 -:1027B0009AA720E030E040E251E40F946FC087FF19 -:1027C0000CC020E030E040E251E4C701B6010F94B4 -:1027D00096BF6FA378A789A79AA7EFA0F8A409A529 -:1027E0001AA52BA13CA14DA15EA16F8D78A189A155 -:1027F0009AA1E2EEF9E0FF93EF93812C912CB0E7E0 -:10280000AB2EB1E4BB2EFE01BB966F010F941A07ED -:1028100088E50E94BE460F900F90882379F00E94B1 -:10282000EC469B01AC016F8D78A189A19AA10F9410 -:1028300096BF6F8F78A389A39AA308C080E090E029 -:10284000A3E5B3E48F8F98A3A9A3BAA389E50E9457 -:10285000BE46882339F00E94EC466BA37CA38DA36F -:102860009EA304C01BA21CA21DA21EA2EFA0F8A43E -:1028700009A51AA52BA13CA14DA15EA16F8D78A140 -:1028800089A19AA1E2EEF9E0FF93EF93812C912CBC -:10289000E8E4AE2EE2E4BE2EDE019B966D010F94BD -:1028A0001A070F94901D84E090E090931802809393 -:1028B0001702E091460AF0E0EE0FFF1FE55CF84BCF -:1028C000859194910E94DC4A0F900F9000E010E0F7 -:1028D000F12C0F94364B81112AC0F3940F94112AD6 -:1028E00081E00E94CF60F110F4CF043FB1E01B07FC -:1028F00011F400E010E080910101846080930101F7 -:102900000115110531F49FB7F8948091020184609C -:1029100008C00431110541F49FB7F8948091020179 -:102920008B7F809302019FBF0F5F1F4FD2CF9FB756 -:10293000F894809102018B7F809302019FBF1092D7 -:102940006C0A10926B0A2224239402EE602E09E096 -:10295000702E84E0482E512C80916B0A90916C0A65 -:10296000892B09F0E4C0E091460AF0E0EE0FFF1F6A -:10297000E950FA4B859194910E94DC4AE2E0F0E044 -:10298000F0931802E093170220923A0AE091460A67 -:10299000F0E0EE0FFF1FE950FA4B859194910F94F0 -:1029A000B2498CE40E94BE46882359F00E94EC464E -:1029B0009B01AC016BA57CA58DA59EA50F9496BF30 -:1029C0000AC020E030E040EA52E46BA57CA58DA56A -:1029D0009EA50F9495BF6BA77CA78DA79EA720E00F -:1029E00030E040EA52E46BA57CA58DA59EA50F942E -:1029F00096BF20E030E044E352E40F9495BF6BA70C -:102A00007CA78DA79EA7EFA0F8A409A51AA52BA1C6 -:102A10003CA14DA15EA16F8D78A189A19AA17F9261 -:102A20006F92812C912CACEAAA2EA2E4BA2EDE0180 -:102A30009B966D010F941A070F94901D20E030E0D3 -:102A400040E751E46BA57CA58DA59EA50F9495BF8D -:102A50006BA77CA78DA79EA7EFA0F8A409A51AA530 -:102A60002BA13CA14DA15EA16F8D78A189A19AA156 -:102A70007F926F92812C912CA12CB0E4BB2E0F94ED -:102A80001A070F94901D20E030E040EA51E46BA556 -:102A90007CA58DA59EA50F9495BF6BA77CA78DA740 -:102AA0009EA7EFA0F8A409A51AA52BA13CA14DA1B2 -:102AB0005EA16F8D78A189A19AA17F926F92812CDE -:102AC000912CE6EAAE2EE2E4BE2E0F941A070F9484 -:102AD000901D0F94901D149A64E670E080E090E0E1 -:102AE0000F94C7B75092180240921702E091460A1D -:102AF000F0E0EE0FFF1FE151FA4B8591949140E019 -:102B000060E00F94F68821E030E00F900F900F9076 -:102B10000F900F900F90882311F020E030E0309359 -:102B20006C0A20936B0A81E00F94098715CF0F94EC -:102B3000786684E090E09093180280931702809169 -:102B40000602882391F0311004C08091C6118823B9 -:102B500061F00E94E5CC09C00F94112A81E00E9427 -:102B6000CF6080910602811105C00F94364B8823F7 -:102B700099F319C0311004C08091C6118823A9F3BC -:102B80000E940ACD882389F320E030E0A90168EE95 -:102B900073E084E50F94F0BB82E390E00E94AD60A7 -:102BA00084E50F9414BF80910602882339F0311018 -:102BB00003C08091C61181110E9403CD82E090E094 -:102BC000909318028093170220E030E04CE852E422 -:102BD0006BA57CA58DA59EA50F9496BF6BA77CA722 -:102BE0008DA79EA7EFA0F8A409A51AA52BA13CA12B -:102BF0004DA15EA16F8D78A189A19AA1A2EE6A2E46 -:102C0000A9E07A2E7F926F92812C912CB0EAAB2EA4 -:102C1000B1E4BB2EFE01BB966F010F941A0720E0B2 -:102C200030E048E452E46BA57CA58DA59EA50F94E9 -:102C300096BF6BA77CA78DA79EA7EFA0F8A409A5B8 -:102C40001AA52BA13CA14DA15EA16F8D78A189A1F0 -:102C50009AA17F926F92812C912CA12CE0E4BE2E40 -:102C60000F941A0710926C0A10926B0A0F94F9666F -:102C70000F900F900F900F90F2E04F2E512C8091FB -:102C80006B0A90916C0A019709F49CC010926C0A2F -:102C900010926B0AE4E0F0E0F0931802E093170260 -:102CA0000F944367509218024092170280916B0A6A -:102CB00090916C0A8230910571F1039709F07CC004 -:102CC00020E030E048E452E46BA57CA58DA59EA5EC -:102CD0000F9496BF6BA77CA78DA79EA7EFA0F8A423 -:102CE00009A51AA52BA13CA14DA15EA16F8D78A1CC -:102CF00089A19AA17F926F92812C912CA12CB0E492 -:102D0000BB2EDE019B966D010F941A070F94AF66E0 -:102D10000F900F90B4CF20E030E04CE852E46BA568 -:102D20007CA58DA59EA50F9496BF6BA77CA78DA7AC -:102D30009EA7EFA0F8A409A51AA52BA13CA14DA11F -:102D40005EA16F8D78A189A19AA17F926F92812C4B -:102D5000912CE0EAAE2EE1E4BE2EDE019B966D01E1 -:102D60000F941A0720E030E048E452E46BA57CA5FC -:102D70008DA59EA50F9496BF6BA77CA78DA79EA738 -:102D8000EFA0F8A409A51AA52BA13CA14DA15EA115 -:102D90006F8D78A189A19AA17F926F92812C912C3D -:102DA000A12CF0E4BF2E0F941A070F94F9660F9030 -:102DB0000F900F900F9063CF0F949C6681E00F945B -:102DC00009875DCF20E030E040EA50E46BA57CA5A8 -:102DD0008DA59EA50F9496BF6BA77CA78DA79EA7D8 -:102DE000EFA0F8A409A51AA52BA13CA14DA15EA1B5 -:102DF0006F8D78A189A19AA1B2EE6B2EB9E07B2EDE -:102E00007F926F92812C912CA12CE0E4BE2EFE01CA -:102E1000BB966F010F941A07A50194016BA57CA5C1 -:102E20008DA59EA50F9495BF6BA77CA78DA79EA788 -:102E3000EFA0F8A409A51AA52BA13CA14DA15EA164 -:102E40006F8D78A189A19AA17F926F92812C912C8C -:102E5000F8EEAF2EF2E4BF2E0F941A07EFA0F8A4FD -:102E600009A51AA52D813E814F81588569817A81F6 -:102E70008B819C817F926F92812C912CA8E4AA2E49 -:102E8000A2E4BA2E0F941A07E984FA840B851C85F4 -:102E90002D813E814F81588569817A818B819C810A -:102EA0007F926F92812C912CB0E7AB2EB1E4BB2EB8 -:102EB0000F941A0720E030E040E050E46BA57CA5B9 -:102EC0008DA59EA50F9496BF6BA77CA78DA79EA7E7 -:102ED000E984FA840B851C852D813E814F815885BC -:102EE00069817A818B819C817F926F92812C912C58 -:102EF000E8EEAE2EE2E4BE2E0F941A07CE010D9638 -:102F00000F94D01380914A0290914B028093580203 -:102F1000909359029F938F9380E19BE09F938F93AF -:102F20008E01015D1F4F1F930F930F94C1CA60E084 -:102F3000C8010E94BCC5E091460AF0E0EE0FFF1FF9 -:102F4000ED58FA4B859194910F94B24910923A0A38 -:102F50001092380A1092370A30926B020FB6F8942A -:102F6000DEBF0FBECDBF8091C611882309F439C3DF -:102F70000E94E6C40F94901D0E941FC7811105C0D6 -:102F80000E9435700E94E6C4F7CF0E9458CC0E9480 -:102F900045CC27C38091851A9091861A892B09F018 -:102FA00020C385E090E09093861A8093851A19C318 -:102FB0008091851A9091861A892B09F012C386E0B8 -:102FC00090E09093861A8093851A0BC388E50E943F -:102FD000BE46882339F00E94EC460F94DEC080E0A4 -:102FE0000F94081F8AE50E94BE46882339F00E948C -:102FF000EC460F94DEC081E00F94081F85E40E9428 -:10300000BE46882309F4EDC20E94EC460F94DEC050 -:1030100082E00F94081FE5C20F946638E2C288E58B -:103020000E94BE46882339F00E94EC460F94E3C00C -:1030300080E00F94043889E50E94BE46882339F069 -:103040000E94EC460F94E3C081E00F9404388AE5B7 -:103050000E94BE46882339F00E94EC460F94E3C0DC -:1030600082E00F94043885E40E94BE46882309F468 -:10307000B8C20E94EC460F94E3C083E00F9404387A -:10308000B0C288E50E94BE46882339F00E94EC4613 -:103090000F94E3C080E00F94353889E50E94BE4666 -:1030A000882339F00E94EC460F94E3C081E00F942E -:1030B00035388AE50E94BE46882339F00E94EC46E6 -:1030C0000F94E3C082E00F94353885E40E94BE4639 -:1030D000882309F486C20E94EC460F94E3C083E083 -:1030E0000F9435387EC20F944A357BC281E08093BD -:1030F000D7190F94663875C288E50E94BE468823AA -:1031000031F00E94EC460F94E3C06093B70289E56A -:103110000E94BE46882331F00E94EC460F94E3C023 -:103120006093B8028AE50E94BE46882331F00E946F -:10313000EC460F94E3C06093B90285E40E94BE465A -:10314000882331F00E94EC460F94E3C06093BA02EA -:1031500005EE14E0D8018D918D01882319F00E94AD -:10316000F546F8CF4AE050E06091B70284E998E074 -:103170000E94524508EF14E0F80181918F018823E5 -:1031800019F00E94F546F8CF4AE050E06091B8028D -:1031900084E998E00E9452450BE015E0D8018D913A -:1031A0008D01882319F00E94F546F8CF4AE050E0DF -:1031B0006091B90284E998E00E9452450EE115E061 -:1031C000F80181918F01882319F00E94F546F8CF0C -:1031D0004AE050E06091BA0284E998E00E945245CA -:1031E00000C288E50E94BE46882339F00E94EC4662 -:1031F0000F94E3C080E00F94393689E50E94BE4603 -:10320000882339F00E94EC460F94E3C081E00F94CC -:1032100039368AE50E94BE46882339F00E94EC4682 -:103220000F94E3C082E00F94393685E40E94BE46D5 -:10323000882309F4D6C10E94EC460F94E3C083E0D2 -:103240000F943936CEC188E50E94BE46882339F0F6 -:103250000E94EC460F94E3C080E00F948B3689E522 -:103260000E94BE46882339F00E94EC460F94E3C0CA -:1032700081E00F948B368AE50E94BE46882339F0A0 -:103280000E94EC460F94E3C082E00F948B3685E4F5 -:103290000E94BE46882309F4A4C10E94EC460F9404 -:1032A000E3C083E00F948B369CC10E94AB5699C15A -:1032B000E0E0FBE084918F01882311F40C94C47149 -:1032C0000E94F5460F5F1F4FF8018491F5CF84E50A -:1032D0000E94BE46882309F4B9C00F94901DE09166 -:1032E000C10FF091C20F319681918032E9F389309C -:1032F000D9F390ED980F9A30B0F08F3379F0E0EF7A -:10330000FAE084918F01882311F40C94C4710E9417 -:10331000F5460F5F1F4FF8018491F5CF0F94BBB2B4 -:103320008093970906C00E94EC460F94E3C0609317 -:10333000970920919709E22EF12C81E090E0022E6E -:1033400001C0880F0A94EAF79091340A982B909361 -:10335000340A222309F433C0E4E1FFE084918F01B1 -:10336000882339F00E94F5460F5F1F4FF8018491C2 -:10337000F7CFEEEEFAE084918F01882339F00E94B6 -:10338000F5460F5F1F4FF8018491F7CF4AE050E0F8 -:10339000B70184E998E00E9428458AE00E94F5463A -:1033A000EFEFF7E405911491F8018491882311F46B -:1033B0000C94C4710E94F5460F5F1F4FF5CF86E451 -:1033C0000E94BE468823D9F00E94EC466B017C0126 -:1033D0006093B1097093B2098093B3099093B409D3 -:1033E00020E030E0A9010F9472C2181644F4C09294 -:1033F0000E02D0920F02E0921002F0921102E4E16C -:10340000FFE084918F01882339F00E94F5460F5F19 -:103410001F4FF8018491F7CFE9E6F9E40591149183 -:10342000F8018491882329F00E94F5460F5F1F4F11 -:10343000F7CF6091E20970E04AE050E084E998E05B -:103440000E9428458AE00E94F546CBC084E40E9491 -:10345000BE46882309F45AC00E94EC460F94DEC091 -:103460006630710509F440C0CCF46130710599F102 -:1034700054F46F3FFFEF7F0759F1672B09F0B1C09C -:103480000E94E43AAEC06330710559F13CF16430FA -:10349000710509F0A6C00E94273CA3C06A307105DF -:1034A00061F13CF46830710511F124F50E94823C11 -:1034B00098C0623528E0720719F1653A33E2730764 -:1034C00011F16C30710509F08CC00E943D3E89C03D -:1034D0000E94DE3A86C00E94FF3A83C00E94173BDA -:1034E00080C00E94903B7DC00E94813C7AC00E94B7 -:1034F000833C77C00E94A43D74C00E94383E71C0D6 -:103500000E944C3E6EC00E94243F6BC0E4E1FFE08D -:1035100084918F01882339F00E94F5460F5F1F4F79 -:10352000F8018491F7CFEBEFF5E405911491F801E0 -:103530008491882329F00E94F5460F5F1F4FF7CF33 -:103540000091CB0F1091CC0F0053104FD8018D91EB -:103550008D01882319F00E94F546F8CFE9EEFAE0D4 -:1035600084918F01882311F40C94C4710E94F54654 -:103570000F5F1F4FF8018491F5CF711028C06620AE -:1035800031F181E0809309120F94FF1D6B017C01E2 -:1035900080E00F94FF1DAB01BC019701860189E01B -:1035A00092E10E940D479B01AC016091FE09709170 -:1035B000FF098091000A9091010A0F9495BF6093D2 -:1035C000FE097093FF098093000A9093010A80918D -:1035D000811A882321F084E190E00F9451561092D3 -:1035E000740A81E090E090931802809317020E9481 -:1035F0002358F8C0C090CD09D090CE09E090CF09F3 -:10360000F090D0092091020A3091030A4091040AF7 -:103610005091050AC701B6010F9495BF2DEC3CEC03 -:103620004CEC5DE30F9472C2181614F00C943F73C7 -:10363000C092020AD092030AE092040AF092050AAC -:1036400082E09AE00F94D01360E080E00E94175C63 -:10365000C9C00E94EC462091EA093091EB094091E3 -:10366000EC095091ED090F9496BF6093F6097093A1 -:10367000F7098093F8099093F9090C9436740E9425 -:10368000EC462091EE093091EF094091F0095091FC -:10369000F1090F9496BF6093FA097093FB09809328 -:1036A000FC099093FD090C9443740E94EC46209110 -:1036B000F2093091F3094091F4095091F5090F9402 -:1036C00096BF6093FE097093FF098093000A909360 -:1036D000010A0C94447520E030E040E85FE360911B -:1036E000020A7091030A8091040A9091050A0F94CE -:1036F00096BF6093020A7093030A8093040A909322 -:10370000050AE090FE09F090FF090091000A10916F -:10371000010A2091FA093091FB094091FC0950916E -:10372000FD096091F6097091F7098091F80990916F -:10373000F909E2EEF9E0FF93EF93812C912CF8EC7C -:10374000AF2EF3E4BF2EA2E0CA2EAAE0DA2E0F9429 -:103750001A070F900F900C94917F82E090E0909365 -:1037600018028093170280E00F9485490C94D1844D -:103770000F94112A81E00E94CF6080E00F943C8476 -:103780000C94A2840E94E146AB01BC014093900DD1 -:103790005093910D6093920D7093930D8BED9CE07F -:1037A0000E941CAB1ECF0F94901D88E50E94BE4660 -:1037B000882319F0179A1092E70989E50E94BE46FE -:1037C000882319F0169A1092E8098AE50E94BE46ED -:1037D00085E40E94BE46882311F40C94D48A149A7E -:1037E0000C94D48AC95ADF4F0FB6F894DEBF0FBECF -:1037F000CDBFDF91CF911F910F91FF90EF90DF90A0 -:10380000CF90BF90AF909F908F907F906F905F9080 -:103810004F903F902F9008950F931F93CF93DF9376 -:103820001F92CDB7DEB781E090E0909318028093AD -:10383000170280916D0A90916E0A892BA1F00F9466 -:1038400098B7009198091091990920919A0930919F -:103850009B09601B710B820B930B693E73408105C2 -:10386000910508F0A5C080916D0A90916E0A892B90 -:1038700011F41092750A8091450A882319F00E946C -:10388000EF5372C00E9428C760E080E89AE00E946F -:10389000E9C08091C70F9091C80F892B09F464C0CB -:1038A0001092C60F8091800A8823B1F00091CB0F4F -:1038B0001091CC0F0053104F60E77DE0C8010F94CA -:1038C000E1C8892BE9F4B80180E89AE00E9457B971 -:1038D0008091810A882319F00E94357023C0E7E7A0 -:1038E000F7E405911491F8018491882329F00E944E -:1038F000F5460F5F1F4FF7CF8AE00E94F54612C0D2 -:1039000060E080E89AE00E94FAB9E1E6F8E4059107 -:103910001491F8018491882379F30E94F5460F5F92 -:103920001F4FF7CF8091C60F81111CC08091C70F28 -:103930009091C80F892BB1F0F89410E090E0E091DD -:10394000CB0FF091CC0FE353F04F8081823011F414 -:103950001181928199830E94E6C4812F99810F94ED -:10396000451478940E94544D0F94112A8091821A24 -:10397000882311F081E001C080E00E94CF600F94A5 -:10398000E81480E00F943C840E9425CE0F94F23915 -:103990008091CB19882319F11092CB1961E081E64F -:1039A0009DE00F90DF91CF911F910F910C94BCC5BA -:1039B00081E08093750A80916D0A90916E0A01975B -:1039C00090936E0A80936D0A0F9498B7609398094C -:1039D0007093990980939A0990939B0944CF0F9013 -:1039E000DF91CF911F910F910895CF93DF93E8E777 -:1039F000F8E08491EF01882331F00E94F54621968A -:103A0000FE018491F8CF4091F6095091F709609139 -:103A1000F8097091F90923E030E084E998E00E9408 -:103A2000F945E5E7F8E08491EF01882331F00E9441 -:103A3000F5462196FE018491F8CF4091FA09509104 -:103A4000FB096091FC097091FD0923E030E084E9F5 -:103A500098E00E94F945E2E7F8E08491EF018823BD -:103A600031F00E94F5462196FE018491F8CF4091F5 -:103A7000FE095091FF096091000A7091010A23E04C -:103A800030E084E998E00E94F945E0E7F8E08491AD -:103A9000EF01882331F00E94F5462196FE018491C2 -:103AA000F8CF8AE0DF91CF910C94F546CF93DF9366 -:103AB000E8E5F8E08491EF01882331F00E94F546B3 -:103AC0002196FE018491F8CF0F94FF1DAB01BC013C -:103AD00023E030E084E998E00E94F945E5E5F8E06C -:103AE0008491EF01882331F00E94F5462196FE0172 -:103AF0008491F8CF81E00F94FF1DAB01BC0123E05E -:103B000030E084E998E00E94F945E2E5F8E084912C -:103B1000EF01882331F00E94F5462196FE01849141 -:103B2000F8CF82E00F94FF1DAB01BC0123E030E031 -:103B300084E998E00E94F945E0E5F8E08491EF011E -:103B4000882331F00E94F5462196FE018491F8CF3A -:103B50008AE0DF91CF910C94F5469F92AF92BF928D -:103B6000CF92DF92EF92FF920F931F93CF93DF9349 -:103B7000CDB7DEB7A0970FB6F894DEBF0FBECDBFAE -:103B80008DE99FE00F94F5CC6093F6097093F709E7 -:103B90008093F8099093F90981EA9FE00F94F5CC9E -:103BA0006093FA097093FB098093FC099093FD09D7 -:103BB0008DE89FE00F94F5CC6B017C0183E79FE0DB -:103BC0000F94FACC8C012AE037ED43E25FE3C701A2 -:103BD000B6010F9496BF6B017C0167E074E0601B37 -:103BE000710B04E0769567950A95E1F780E090E027 -:103BF0000F940FC12091721830917318409174186E -:103C0000509175180F9476C09B01AC01C701B601A5 -:103C10000F9496BF6093FE097093FF098093000A8A -:103C20009093010A82E79FE00F94EDCC882391F1F5 -:103C30008EE69FE00F94F5CC6093020A7093030A1E -:103C40008093040A9093050A85E799E09F938F93E8 -:103C5000CE0101967C01FF928F930F94C1CAF701A8 -:103C600001900020E9F78F01015011096091020ACB -:103C70007091030A8091040A9091050A23E046E0BE -:103C80000F94BFC560E0C7010E94BCC50F900F90A4 -:103C90000F900F9080E1E6EFF9E0A1ECB9E0019020 -:103CA0000D928A95E1F7E3E4F9E084918F0188238E -:103CB00039F00E94F5460F5F1F4FF8018491F7CF4E -:103CC00094DE0E942CDE10920912A5E7EA2EAFE0E6 -:103CD000FA2ED12CB3E0BB2EAA24A39417E0C12E58 -:103CE0008D2D6B2D0F9412C5082F992E42E050E0B8 -:103CF000B701CE014F960F94DDCC6F8D78A1611581 -:103D0000710511F0A09209122C2D020380011124DB -:103D1000090D111D97FC1A95000F111F000F111F9F -:103D2000075F1D4E882777FD8095982F0F9411C14E -:103D30002FE632E143E85AE30F9444C3F80161836C -:103D4000728383839483D394F2E0EF0EF11C29E015 -:103D5000D212C6CF80910912882321F089E092E126 -:103D60000E94C3FB0E94B7FAE090FE09F090FF09A1 -:103D70000091000A1091010A2091FA093091FB0983 -:103D80004091FC095091FD096091F6097091F70985 -:103D90008091F8099091F909E2E0CE2EEAE0DE2E5A -:103DA0000F945B1281E08093E70917988093E809EC -:103DB00016988093E9091598E1E1F9E084918F0163 -:103DC000882339F00E94F5460F5F1F4FF801849158 -:103DD000F7CF6CDE8CE89FE00F94EDCCE091E20928 -:103DE000F0E0EE0FFF1FE558F64E90E091838083E0 -:103DF0008BE89FE00F94EDCC90E090937A1980933C -:103E00007919A0960FB6F894DEBF0FBECDBFDF9133 -:103E1000CF911F910F91FF90EF90DF90CF90BF90C7 -:103E2000AF909F900895FF920F931F93CF93DF93CE -:103E3000CDB7DEB76E970FB6F894DEBF0FBECDBF1D -:103E4000F82E81E00F94098782E00F943C84E09182 -:103E5000460AF0E0EE0FFF1FEF5DF84B859194915D -:103E60000F94B2497ADEE091E209F0E0EE0FFF1F15 -:103E7000E558F64E81818F9380818F9383E49AE099 -:103E80009F938F938E010F5F1F4F1F930F930F947C -:103E9000C1CA60E0C8010E94BCC580917A198F93A5 -:103EA000809179198F938AE39AE09F938F931F9360 -:103EB0000F930F94C1CA60E0C8010E94BCC50FB641 -:103EC000F894DEBF0FBECDBF20E030E048EC51E4F7 -:103ED0006091FE097091FF098091000A9091010A9A -:103EE0000F946FC087FF05C061E08EE29AE00E94E8 -:103EF000BCC561E086E29AE00E94BCC5E091E2099F -:103F0000F0E0EE0FFF1FE558F64E81818F93808120 -:103F10008F932DE13AE03F932F931F930F930F94CC -:103F2000C1CA60E0C8010E94BCC580917A198F9314 -:103F3000809179198F9324E13AE03F932F931F9357 -:103F40000F930F94C1CA60E0C8010E94BCC561E034 -:103F500080E19AE00E94BCC50FB6F894DEBF0FBEA8 -:103F6000CDBFF11005C061E085E09AE00E94BCC5BC -:103F700061E089EF99E00E94BCC560E085EA9FE0BE -:103F80000F94FFCCE1EEF9E084918F01882339F0A2 -:103F90000E94F5460F5F1F4FF8018491F7CFE8ECC0 -:103FA000F9E084918F01882339F00E94F5460F5F74 -:103FB0001F4FF8018491F7CF4091F6095091F7090E -:103FC0006091F8097091F90922E030E084E998E005 -:103FD0000E94FA45EFEAF9E084918F01882339F0D5 -:103FE0000E94F5460F5F1F4FF8018491F7CF409173 -:103FF000FA095091FB096091FC097091FD0922E0DA -:1040000030E084E998E00E94FA450E94A46CE5E95A -:10401000F9E084918F01882339F00E94F5460F5F03 -:104020001F4FF8018491F7CF4091FE095091FF098D -:104030006091000A7091010A22E030E084E998E082 -:104040000E94F945EBE7F9E084918F01882339F06C -:104050000E94F5460F5F1F4FF8018491F7CF409102 -:10406000020A5091030A6091040A7091050A22E045 -:1040700030E084E998E00E94F9456E960FB6F89416 -:10408000DEBF0FBECDBFDF91CF911F910F91FF908B -:104090000895CF92DF92EF92FF920F931F93CF93E9 -:1040A000DF930F94F94A82E694EA90938E09809305 -:1040B0008D091092900910928F0982E080938809EF -:1040C00010929209109291090E94CA4C84EC9FE0D0 -:1040D0000F94EDCC8093811A6FE77AE181EC9FE039 -:1040E0000F94A8482091811A80917F1A9091801A8C -:1040F0002F3F11F4009721F08F3F2FEF920711F41B -:104100001092811A019621F41092801A10927F1A4F -:1041100088E09FE00F94EDCC8F3F19F08093190950 -:1041200002C0109219098091811A882339F088E021 -:1041300090E00F94515681E08093190940E052ECD1 -:1041400061E070E084E998E00E94C04389E097E470 -:104150009093800980937F091092820910928109BF -:1041600082E080937A09109284091092830987E78C -:1041700099E09093F91A8093F81AE8E4FEE08491AC -:10418000EF01882331F00E94F5462196FE018491CB -:10419000F8CF8AE00E94F546C4E1DFE0FE01849199 -:1041A0008E01882339F00E94F5460F5F1F4FF801FA -:1041B0008491F7CF86E39EE09F938F930F9414CA68 -:1041C00014B70F900F9010FF06C0EBE4F7E4859151 -:1041D00094910F9464CA11FF06C0E9E8F8E4859150 -:1041E00094910F9464CA12FF06C0E7EFF8E485913A -:1041F00094910F9464CA13FF06C0EBEDF5E485912A -:1042000094910F9464CA15FF06C0E5E5F6E4859124 -:1042100094910F9464CA14BEFE01849104E11FE0DE -:10422000882339F00E94F5460F5F1F4FF8018491F3 -:10423000F7CFE5EDF8E4E590F490F7018491882359 -:1042400031F00E94F546FFEFEF1AFF0AF6CFE1E2E8 -:10425000FEE084918F01882339F00E94F5460F5FBC -:104260001F4FF8018491F7CFE3E6F9E4E590F4906D -:10427000F7018491882331F00E94F546FFEFEF1A91 -:10428000FF0AF6CFEAE0FEE084918F01882339F03F -:104290000E94F5460F5F1F4FF8018491F7CF8AE027 -:1042A0000E94F546EFEFFDE084918F01882339F0FD -:1042B0000E94F5460F5F1F4FF8018491F7CFE3EF9F -:1042C000FDE084918F01882339F00E94F5460F5F4D -:1042D0001F4FF8018491F7CF8AE00E94F546FE0156 -:1042E000849104E11FE0882339F00E94F5460F5FB6 -:1042F0001F4FF8018491F7CFE7E4F8E4E590F490DC -:10430000F7018491882331F00E94F546FFEFEF1A00 -:10431000FF0AF6CF0E9481B04AE050E0BC0184E978 -:1043200098E00E942845E9E5F7E4E590F490F7016C -:104330008491882331F00E94F546FFEFEF1AFF0ABF -:10434000F6CF4AE050E060E275E084E998E00E9430 -:1043500028458AE00E94F54660E084E190E00E94F2 -:10436000E3380E9498B00F947D260E94CA4C0F94A7 -:1043700014050E94D04C8FEF9FE00F94EDCC91E09C -:10438000811101C090E09093D71989E69FE00F94C6 -:10439000EDCC882329F00E94404B61E375E004C016 -:1043A0000E94524B66E475E084E998E00E94334530 -:1043B0000F94A41F0E949EDD0E941A4D9FB7F8948F -:1043C00080910B01846080930B019FBF83E40F9465 -:1043D000D43A08967C0174E0F694E7947A95E1F774 -:1043E000E114F10491F0429A62E070E080E090E024 -:1043F0000F94C7B7429862E070E080E090E00F94BD -:10440000C7B7F1E0EF1AF108EBCF159884EC9FE005 -:104410000F94EDCC8093811A6FE77AE181EC9FE0F5 -:104420000F94A8482091811A80917F1A9091801A48 -:104430002F3F11F4009721F08F3F2FEF920711F4D7 -:104440001092811A019621F41092801A10927F1A0C -:104450008091811A882321F088E090E00F945156D2 -:104460008BEB9FE00F94EDCC91E0813009F090E070 -:104470009093B80C8CEF9FE00F94F5CC6F3F7F4F7B -:104480008F4F9F4F99F488EF9FE00F94F5CC6F3FCB -:104490007F4F8F4F9F4F51F460E08FEF9FE00F945D -:1044A0001DCD61E08FE59FE00F941DCD80E89AE07F -:1044B0000E942BC084E69FE00F94EDCC8F3F29F43F -:1044C00060E084E69FE00F941DCD86E69FE00F94A8 -:1044D000EDCC8F3F29F460E086E69FE00F941DCD80 -:1044E00085E69FE00F94EDCC8F3F29F460E085E6F0 -:1044F0009FE00F941DCD8EEF9FE00F94EDCC809345 -:10450000460A823010F00F942A6B8FEA9FE00F94D6 -:10451000EDCC8F3F41F460E08FEA9FE00F941DCD1A -:104520001092730A06C091E0811101C090E090934F -:10453000730A86EA9FE00F94EDCC8F3F59F561E056 -:1045400086EA9FE00F941DCD68E070E080EB9FE06D -:104550000F942BCD68E170E082EB9FE00F942BCDA0 -:1045600060E370E084EB9FE00F942BCD60E570E09A -:1045700086EB9FE00F942BCD68E770E088EB9FE01F -:104580000F942BCD61E08FEA9FE00F941DCD81E069 -:104590008093730A85EA9FE00F94EDCC8F3F29F456 -:1045A00060E085EA9FE00F941DCD89E09FE00F94C5 -:1045B000EDCC8F3F29F460E089E09FE00F941DCDA2 -:1045C0000E941E630E945A6C0E94DB6B0E94D9CC31 -:1045D0006CE472E087EA9FE00F94A8486EE472E012 -:1045E00089EA9FE00F94A84860E572E08BEA9FE0BB -:1045F0000F94A84862E572E08DEA9FE00F94A84806 -:1046000084E090E090931802809317028FE59FE07A -:104610000F94EDCC813021F480E090E00F94AC6FEA -:104620008FE59FE00F94EDCC811111C087EF9FE0E3 -:104630000F94EDCC9FEF980F9E3F08F09BC084C075 -:10464000813009F0ADC08091730A81118CC083E084 -:1046500090E0909318028093170281E00F940987ED -:104660000F94594882E00F943C840F94E8B685EA91 -:104670009FE00F94EDCC813009F04CC00F94112ACB -:10468000C0905D19D0905E19E0905F19F0906019AC -:104690008BE89FE00F94EDCC682F70E080E090E015 -:1046A0000F940FC120E030E040EA50E40F9495BF32 -:1046B0009B01AC01C701B6010F9472C2181614F425 -:1046C00081E010C0E091460AF0E0EE0FFF1FE35ECC -:1046D000F84B8591949140E060E00F94F688882330 -:1046E00019F080E0A0DB16C060E085EA9FE00F943F -:1046F000FFCC81E00F94098782E00F943C84E09125 -:10470000460AF0E0EE0FFF1FED58FA4B85919491A9 -:104710000F94B24981E090E09093180280931702C1 -:1047200028E288E190E00FB6F894A89580936000A5 -:104730000FBE20936000DF91CF911F910F91FF90EA -:10474000EF90DF90CF900895863E09F079CFE09109 -:10475000460AF0E0EE0FFF1FE55BF64B8591949162 -:104760000F94EC9319C086EA9FE00F94EDCC811171 -:104770006ECF12C060E070E088EF9FE00F9419CD1B -:10478000E091460AF0E0EE0FFF1FE75BF74B8591E3 -:1047900094910F94EC935BCF81E00F94098757CFEE -:1047A000803F09F054CFECCF23E635E0FC013183A4 -:1047B00020832781222319F004960C94FFAB0895DF -:1047C0008F929F92AF92BF92CF92DF92EF92FF9221 -:1047D0000F931F93CF93DF938C01895A9D4FE4DF92 -:1047E000680185E9C80ED11CC114D10419F1780102 -:1047F00085E3E81A8EEFF80AE70157018FE1A81A5E -:10480000B10883E6882E85E0982ECC15DD0591F061 -:10481000FE01EE19FF09EA0DFB1D91828082FE0167 -:1048200078978081811102C06F97EFCFCE014B97AF -:10483000E6D7FACFC8018A589F4FB6DFC8018B5A16 -:104840009F4FDF91CF911F910F91FF90EF90DF90DD -:10485000CF90BF90AF909F908F90A6CF80E89AE0C6 -:104860000E9477B50F9498B760937C0A70937D0A85 -:1048700080937E0A90937F0A0F9498B76056794789 -:104880008E4F9F4F60936F0A7093700A8093710AE6 -:104890009093720A0F9498B760934D0A70934E0AE2 -:1048A00080934F0A9093500A0F9498B76093490AE7 -:1048B00070934A0A80934B0A90934C0A089580E8BB -:1048C0009AE07ECF682F80E09AE10E94144380E056 -:1048D00090E008958FEF8EBD0DB407FEFDCF8EB52D -:1048E00008958EBD0DB407FEFDCF089561E0FC0173 -:1048F00080810D94BCB9FC012281322F306A36953B -:104900003CBD20FD06C031E0263009F430E0232F05 -:1049100001C020E02DBD60E0FC0180810D94BCB998 -:10492000CF92DF92EF92FF920F931F93CF93DF937B -:10493000EC018B017A010F9498B76B01CBDF8B836D -:104940008F3F49F40F9498B76C197D096D3271400F -:10495000A8F381E144C08E3F11F08FE040C0E11424 -:10496000F104D9F0C70101972FEF2EBDF8014FEFE9 -:104970009F01201B310B2817390738F40DB407FEAF -:10498000FDCF2EB521934EBDF3CF0DB407FEFDCF65 -:104990002EB5F801E80FF91F2083D801E00EF11EB3 -:1049A000C12CD12CAE15BF0579F08D91ED2DFF27CF -:1049B000E827EE0FFF1FEF5DF04F85919491DC2CFF -:1049C000CC24C826D926EECF85DF082F10E0102F83 -:1049D000002780DF082BC016D10659F080E28983BA -:1049E000CE0184DFCD81CC2369F08FEF7ADFC0E088 -:1049F00009C0CE017BDFCD81CC2319F08FEF71DFB1 -:104A000001C0C1E08C2FDF91CF911F910F91FF90DA -:104A1000EF90DF90CF9008950F931F93CF93DF9384 -:104A2000EB010F9498B78B0155DF8F3F49F00F943E -:104A300098B7601B710B6C177D07B0F380E001C065 -:104A400081E0DF91CF911F910F910895CF92DF9276 -:104A5000FF920F931F93CF93DF9300D01F92CDB798 -:104A6000DEB76C01F62E29833A834B835C8343DFE8 -:104A70006CE271E0C601D0DF8F2D806432DF08E187 -:104A800010E05C814B813A812981DA01C901002E55 -:104A900004C0B695A795979587950A94D2F7298370 -:104AA0003A834B835C831DDF0850110929813A81C9 -:104AB0004B815C81083F8FEF180739F7FF2029F001 -:104AC000E8E0FE1621F08FEF03C085E901C087E81A -:104AD00008DFFCE0FF1201C0FDDE10E0FBDEF601A6 -:104AE000838387FF04C01F3F11F01F5FF7CF0F9034 -:104AF0000F900F900F90DF91CF911F910F91FF902A -:104B0000DF90CF900895BF92CF92DF92EF92FF9205 -:104B10000F931F93CF93DF93EC01B62E1C82198263 -:104B200048830F9498B78B0161E088810F9483B913 -:104B3000CE01DCDE60E082E30F9483B961E083E3C1 -:104B40000F9483B961E084E30F9483B961E085E356 -:104B50000F9483B961E085E30F94BCB985E08A8343 -:104B600082E58CBD1DBC6AE0F62E8FEFBADEFA94AA -:104B7000E1F720E030E0A90160E0CE0167DFF82E28 -:104B80008B8381E0F81649F00F9498B7601B710B86 -:104B9000613D774070F381E046C02AEA31E040E0B1 -:104BA00050E068E0CE0152DF82FF02C0FC820CC000 -:104BB00054E0F52E8FDE8B83FA94E1F78A3A11F0F8 -:104BC00082E031C082E08C838C81823031F4C12C50 -:104BD000D12CE12C40E4F42E03C0C12CD12C760161 -:104BE00020E030E0A90167E3CE0130DFA7019601A4 -:104BF00069E2CE012BDF8B83882349F00F9498B7AD -:104C0000601B710B613D774058F38AE00CC08C81CA -:104C10008230B1F420E030E0A9016AE3CE0116DF72 -:104C2000882329F088E08983CE0160DE14C052DE3B -:104C3000807C803C11F483E08C834CDE4BDE4ADECA -:104C4000CE0154DE86E08B1518F488E1898303C019 -:104C5000BA8281E001C080E0DF91CF911F910F9176 -:104C6000FF90EF90DF90CF90BF900895AF92BF92EA -:104C7000CF92DF92EF92FF920F931F93CF93DF9328 -:104C8000EC016A017B0189018C81833039F0F9E004 -:104C9000CC0CDD1CEE1CFF1CFA95D1F773E0B72E8F -:104CA000E4E0AE2EBA94A701960161E1CE01CEDE1A -:104CB000882311F0A98207C040E052E0B801CE017C -:104CC0002FDE81110EC0CE01BB2049F00FDE20E0A7 -:104CD00030E0A9016CE0CE01B9DE1982E3CF06DE37 -:104CE00080E0DF91CF911F910F91FF90EF90DF90C7 -:104CF000CF90BF90AF900895CF93DF93EC016EBD3E -:104D000020E030E00DB407FEFDCFFA01E20FF31F03 -:104D100080818EBD0DB407FEFDCF81818EBD2E5FDB -:104D20003F4F211582E0380769F70DB407FEFDCF2C -:104D30008FEFD7DD8FEFD5DDCDDD8B838F718530A4 -:104D400031F083E18983CE01D1DD80E001C081E0D3 -:104D5000DF91CF9108950F931F93CF93DF93EC01D1 -:104D600089018C81833039F0B9E0440F551F661FEB -:104D7000771FBA95D1F79A01AB0168E1CE0166DEE3 -:104D8000882311F086E01EC0A8016EEFCE01B4DFCB -:104D90008823C9F068E572E0CE013EDE182F81114C -:104DA00002C087E10FC020E030E0A9016DE0CE0134 -:104DB0004DDE811106C08EDD811103C0CE0196DD6E -:104DC00005C086E18983CE0191DD10E0812FDF915E -:104DD000CF911F910F9108950F931F93CF93DF935E -:104DE000EC010F9498B78B0175DD8B838F3F49F4ED -:104DF0000F9498B7601B710B6D327140A8F381E17D -:104E000003C08E3F31F08FE08983CE016FDD80E0FB -:104E100001C081E0DF91CF911F910F910895CF9252 -:104E2000DF92EF92FF920F931F93CF93DF937C015A -:104E300069019A01AB0160E309DE882321F080E873 -:104E4000F70181831BC0C701C7DF8823B9F0E601E2 -:104E5000C00ED11ECC15DD0519F03CDD8993FACFCB -:104E60000230F2E01F0720F435DD0F5F1F4FF8CF4F -:104E7000C7013CDD8FEF35DD81E003C0C70136DDC2 -:104E800080E0DF91CF911F910F91FF90EF90DF9025 -:104E9000CF9008954F925F926F927F928F929F92E0 -:104EA000AF92BF92CF92DF92EF92FF920F931F9338 -:104EB0004801590151E09522AA24BB24240135015F -:104EC0004E0C5F1C611C711C51E0451652E05506EA -:104ED0006104710430F0E12CE2E0FE2EE818F908DC -:104EE00004C0E114F10409F448C0462E512C612C91 -:104EF000712C7724469477946624552444246623A1 -:104F000069F04770842E912CA12CB12C5CE1880CA7 -:104F1000991CAA1CBB1C5A95D1F70CC04F70842E4B -:104F2000912CA12CB12C4BE1880C991CAA1CBB1C08 -:104F30004A95D1F7B901A8016170772709E0440FBC -:104F4000551F661F771F0A95D1F7442955296629F1 -:104F50007729270121E0421A510821E05222612CD1 -:104F6000712C4429552966297729482959296A2904 -:104F70007B298701960153DF01C081E01F910F91CA -:104F8000FF90EF90DF90CF90BF90AF909F908F9069 -:104F90007F906F905F904F900895CF93DF93EC01D7 -:104FA0009C012C5F3F4F41E050E060E070E0898D54 -:104FB0009A8D0E94BFB2882399F04D895E896F89CE -:104FC000788D452B462B472B59F44C815D816E81A2 -:104FD0007F814D8B5E8B6F8B788F998190689983E1 -:104FE000DF91CF910895CF92DF92EF92FF920F93CE -:104FF0001F93CF93DF93EC0189899A89AB89BC8990 -:10500000803E9F4FAF41B10510F080E06AC0CE01F5 -:10501000C4DF8823D1F30E94D3B0182F8823A9F3CB -:10502000E98DFA8DCC80DD80EE80FF8032E0C31AFE -:10503000D108E108F108058404C0CC0CDD1CEE1C8D -:10504000FF1C0A94D2F786859785A089B189C80E7E -:10505000D91EEA1EFB1E81E08093A10DC092A40F11 -:10506000D092A50FE092A60FF092A70F80E092E0F9 -:10507000E4EAFDE0DF019C011D9221503040E1F7A0 -:1050800001E0E98DFA8D8481081788F424EA3DE077 -:10509000B701A601400F511D611D711D8091A20D28 -:1050A0009091A30D58DE8823E1F00F5FEACFC12C69 -:1050B00082E0D82EE12CF12C058404C0CC0CDD1C40 -:1050C000EE1CFF1C0A94D2F749895A896B897C89A6 -:1050D0004C0D5D1D6E1D7F1D498B5A8B6B8B7C8B20 -:1050E000812FDF91CF911F910F91FF90EF90DF9073 -:1050F000CF900895CF93DF93EC0141E0611101C09F -:1051000040E06C857D858E859F850E9413B1882344 -:1051100041F0888920E2829FC00111248C55924F72 -:1051200002C080E090E0DF91CF91089530E020E070 -:105130004EE2DC015C91503271F0383029F4FB0111 -:10514000E20FF11D40832F5FFB01E20FF11DDC0137 -:105150005C9150832F5F3F5F01963B3051F7FB011D -:10516000E20FF11D10820895CF93DF93EB01FC0154 -:105170002381211102C080E00EC02250223020F491 -:105180008FE28883198206C060E0B4DF009799F34C -:10519000BE01CCDF81E0DF91CF910895FB012BE0D0 -:1051A00030E231932150E9F7DC0190E027E03A2F1B -:1051B000EB2F8D9181110AC0DA013C931196EC938B -:1051C00081E0FB019081903239F525C08F32A1F347 -:1051D0008E3219F0E1E2F1E108C02A30E1F098E006 -:1051E0002AE0E5CF31963817B1F034913111FACF7A -:1051F000291788F03FED380F3E3568F431E0390F5C -:10520000FB01E90FF11D9FE9980F9A3108F48052D4 -:105210008083932FCCCF80E008950F931F93CF937B -:10522000DF93EC018B018B81882311F080E042C079 -:10523000FB018789803139F18032C1F783E08B83AC -:10524000F801428D538D648D758D4D8B5E8B6F8B08 -:10525000788F9E012F5E3F4FC8010E94CAB18823FC -:1052600029F31A8F098F81E089831C821D821E8297 -:105270001F82188619861A861B861C861D861E8626 -:105280001F86188A17C082E08B831D8A1E8A1F8A98 -:10529000188EFB01408D518D60E070E095E0440F69 -:1052A000551F661F771F9A95D1F7498B5A8B6B8BC9 -:1052B0007C8BD7CFDF91CF911F910F9108952F92C3 -:1052C0003F924F925F926F927F928F929F92AF9296 -:1052D000BF92CF92DF92EF92FF920F931F93CF93E3 -:1052E000DF93EC015B016A018B81811103C08FEFB9 -:1052F0009FEFC6C0898180FFFACF49895A896B899F -:105300007C8988859985AA85BB852601612C712CAD -:105310008A019B01081B190B2A0B3B0B40165106F7 -:105320006206730618F06A01C81AD90A76013E01AE -:1053300024E0620E711CE114F10409F476C0488582 -:1053400059856A857B854A0181E098222B811A0163 -:105350002B01E9E05694479437942794EA95D1F7C6 -:10536000898D9A8DFC01223049F4628D738D848D74 -:10537000958D620D731D841D951D3CC014811150C7 -:10538000122181149104C1F4111116C0452B462B32 -:10539000472B49F48D899E89AF89B88D8C839D8375 -:1053A000AE83BF8309C04C815D816E817F81930193 -:1053B00072D7882309F49BCFE98DFA8D6C817D81AA -:1053C0008E819F816250710981099109058404C011 -:1053D000660F771F881F991F0A94D2F72685378595 -:1053E00040895189620F731F841F951F610F711DC2 -:1053F000811D911D20E032E02819390987012E1501 -:105400003F0508F489010115F2E01F0761F52091BD -:10541000A40F3091A50F4091A60F5091A70F6217CE -:1054200073078407950719F41EC0C60129C09501AA -:10543000AB01BC018091A20D9091A30D17DC8823D4 -:1054400009F455CFA00EB11E88859985AA85BB8524 -:10545000800F911FA11DB11D88879987AA87BB87DF -:10546000E01AF10A68CF40E0DED6882309F43FCF86 -:10547000B4016C55724FA801C5010F9408C9E2CF61 -:10548000DF91CF911F910F91FF90EF90DF90CF9020 -:10549000BF90AF909F908F907F906F905F904F9054 -:1054A0003F902F900895CF93DF931F92CDB7DEB733 -:1054B00041E050E0BE016F5F7F4F01DF019719F4BB -:1054C000898190E002C08FEF9FEF0F90DF91CF9125 -:1054D0000895CF92DF92EF92FF920F931F93CF9395 -:1054E000DF936C01EB017A01FC018381823060F073 -:1054F00000851185228533850F71112722273327D7 -:10550000012B022B032B11F08FEF5CC041155105CD -:1055100011F0F70110821DE040E250E0BE01C6012B -:10552000CEDE8032910539F021E0892B09F420E0AC -:10553000822F819547C028812223C1F0253E61F347 -:105540002E3251F33B853F733F3061F4E114F10497 -:1055500049F04A8D5B8D452B29F42F713FEF320FB7 -:10556000343030F02B8523FDD7CF2CC080E02AC00B -:1055700030E021503109129FC001139F900D11247A -:10558000F701E80FF91F298120832B8121832D81C9 -:1055900022832F812383298524832E8525832889AF -:1055A00026832A8927832C8920872E892187288D85 -:1055B00022872C8D23872E8D2487288126FFD2CF0A -:1055C0001586D0CFDF91CF911F910F91FF90EF9073 -:1055D000DF90CF9008951F93CF93DF93EC018B81E1 -:1055E000823018F480E090E023C0488559856A85B0 -:1055F0007B85A5E07695679557954795AA95D1F750 -:10560000142F1F70CE014FDF97FDECCF48855985D1 -:105610006A857B85415E5F4F6F4F7F4F4887598713 -:105620006A877B8720E2129FC00111248C55924F1C -:10563000DF91CF911F9108954F925F926F927F9269 -:10564000AF92BF92CF92DF92EF92FF920F931F9390 -:10565000CF93DF93EC016A017B012B81222349F078 -:1056600089899A89AB89BC8984179507A607B707EA -:1056700010F480E06BC0223009F463C0C114D1047F -:10568000E104F10449F41C821D821E821F821886E7 -:1056900019861A861B8659C088859985AA85BB8577 -:1056A000E98DFA8DE585F0E03996AC01BD014150F8 -:1056B0005109610971090E2E04C0769567955795B9 -:1056C00047950A94D2F797018601015011092109E3 -:1056D000310904C03695279517950795EA95D2F7B5 -:1056E000041715072607370720F0892B8A2B8B2BE9 -:1056F00049F48D899E89AF89B88D8C839D83AE8353 -:10570000BF8304C0041B150B260B370B280139017E -:105710005E0184E0A80EB11C4114510461047104BF -:1057200081F04C815D816E817F819501898D9A8D9B -:10573000B2D591E0491A5108610871088111ECCF86 -:1057400005C0C886D986EA86FB8681E0DF91CF91C5 -:105750001F910F91FF90EF90DF90CF90BF90AF908F -:105760007F906F905F904F9008950F931F93CF930A -:10577000DF93EC018B818823D1F1898187FF32C0CF -:1057800061E0CE01B7DC8C01009789F1FC018081DA -:10579000853E69F18B81823040F449895A896B8951 -:1057A0007C89448F558F668F778F4D895E896F898D -:1057B000788DF801538F428F758B648BE0919B0D30 -:1057C000F0919C0D309759F0B8016A5E7F4FC80187 -:1057D00048961995F801808D918D938B828B8981E4 -:1057E0008F778983DF91CF911F910F91DCC481E086 -:1057F000888380E0DF91CF911F910F910895CF931F -:10580000DF93EC01B2DF1B82DF91CF910895FC01A1 -:1058100023812111F4CF08954F925F926F927F926E -:10582000AF92BF92CF92DF92EF92FF920F931F93AE -:10583000CF93DF9300D01F92CDB7DEB75C016A0132 -:105840007B01FC0183818130E9F4818181FF1AC0F1 -:10585000F50181899289A389B48984179507A607E0 -:10586000B70780F0892B8A2B8B2B09F472C0F501C6 -:105870004084518462847384B701A601C501DCDED3 -:10588000811102C080E066C0F501818D928DC11446 -:10589000D104E104F10469F4458956896789708D62 -:1058A00077D7882379F3F501158A168A178A108E1F -:1058B00037C0F50144815581668177819E012F5F54 -:1058C0003F4FE9D48823F1F249815A816B817C8171 -:1058D000F501818D928DFC012789203139F4483FF3 -:1058E000FFEF5F0761057105D8F407C0483F2FEF50 -:1058F000520762072FE0720798F44AD7882309F409 -:10590000C1CFF50144815581668177810FEF1FEF8B -:105910002FEF3FE0818D928DA3D5882309F4B2CF7C -:10592000F501C18AD28AE38AF48A81818068818301 -:10593000C5011BDF882309F4A5CFB701A6014C14CC -:105940005D046E047F0410F4B301A201C50174DE8E -:1059500001C081E00F900F900F900F90DF91CF91D9 -:105960001F910F91FF90EF90DF90CF90BF90AF907D -:105970007F906F905F904F900895FF920F931F93C9 -:10598000CF93DF93EC01F42E80E2689FF0011124A5 -:10599000EC55F24F8385817121F0842F827109F0DB -:1059A0004EC08091A40F9091A50FA091A60FB09129 -:1059B000A70F8C879D87AE87BF87688B44895589E1 -:1059C00060E070E0BA0155274427028D138D20E076 -:1059D00030E0402B512B622B732B4D8B5E8B6F8BEA -:1059E000788F8385887151F4048D158D268D378DC0 -:1059F000098B1A8B2B8B3C8B81E00BC08031F9F427 -:105A00009E012F5E3F4F898D9A8DC4D48823B9F0B3 -:105A100084E08B838F2D8F7089831C821D821E8270 -:105A20001F82188619861A861B86F4FE0BC040E07A -:105A300050E0BA01CE01F0DE811104C011C01B821A -:105A400080E00EC0F5FE0BC049895A896B897C89BC -:105A5000CE01DF91CF911F910F91FF90EDCD81E0AD -:105A6000DF91CF911F910F91FF900895AF92BF9258 -:105A7000CF92DF92EF92FF920F931F93CF93DF931A -:105A80007C01EB016A01B22E898D9A8DF701928F0C -:105A9000818F40E050E0BA01CE01CEDDA12C088517 -:105AA00019852A853B8589899A89AB89BC8908171C -:105AB00019072A073B07A0F585E036952795179526 -:105AC00007958A95D1F70F70CE0185DD009709F40F -:105AD00081C0FC012081222311F0253EB9F4A110E0 -:105AE0000EC04091A40F5091A50F6091A60F709128 -:105AF000A70FF7014487558766877787008BFC01DE -:105B00008081AA24A3948111CACF0AC04BE050E03F -:105B1000BC01C6010F94FBC8892B09F0C0CF58C047 -:105B20008B2D8274823409F055C0AA2049F0F70108 -:105B3000008961E0C701DEDAEC01009769F44AC030 -:105B40008B81823009F446C0CE014DDA882309F4F6 -:105B500041C0C4EADDE000E080E2FE0111928A95D6 -:105B6000E9F78BE0F601DE0101900D928A95E1F7ED -:105B7000E0919B0DF0919C0D309739F0BE01625F72 -:105B80007F4FCE014096199508C081E298E2998B2B -:105B9000888B80E098E09F878E87888999899B8B86 -:105BA0008A8B998F888F8E859F859F8B8E8BFBD25A -:105BB000882381F04B2D602FC701DF91CF911F917A -:105BC0000F91FF90EF90DF90CF90BF90AF90D5CE28 -:105BD000B7FEF0CF80E0DF91CF911F910F91FF9042 -:105BE000EF90DF90CF90BF90AF9008953F924F928B -:105BF0005F926F927F928F929F92AF92BF92CF925D -:105C0000DF92EF92FF920F931F93CF93DF93CDB765 -:105C1000DEB7C354D1090FB6F894DEBF0FBECDBFB7 -:105C20005C016B0124965FAF4EAF2497522E1C8E01 -:105C30001F8E19821C826115710511F410E073C06A -:105C4000FC0183818111FACF2496EEADFFAD24973C -:105C500080818F3211F076011DC02496EEADFFAD2C -:105C6000249780818F3231F431962496FFAFEEAFC6 -:105C70002497F3CFF60183818250823060F3F601DE -:105C8000618D728DCE010196C8DA8823B9F2CE01FA -:105C900001967C018E01045E1F4F3801FE01319692 -:105CA0004F01402E312E19C08823A9F121E0AE0109 -:105CB000495C5F4FB701C801D9DE882309F4BECF24 -:105CC000EC14FD0411F0C7019ADD0615170501F16A -:105CD000942D832D7801092F182FAE014E5B5F4F55 -:105CE000BE01695C7F4F24968EAD9FAD249756DA36 -:105CF000882309F4A3CF2496EEADFFAD24978081CD -:105D00008F3291F631962496FFAFEEAF2497F3CF02 -:105D1000982D892DDFCF252DAE01495C5F4FB7014E -:105D2000C501A4DE182FCE01019671DDCE014C967F -:105D30006EDD812FCD5BDF4F0FB6F894DEBF0FBE57 -:105D4000CDBFDF91CF911F910F91FF90EF90DF902A -:105D5000CF90BF90AF909F908F907F906F905F900B -:105D60004F903F900895CF93DF93EC0140E050E0D7 -:105D7000BA0152DD882361F061E0CE01BBD9009702 -:105D800039F025EEFC0120831B82DF91CF910BC2FD -:105D900080E0DF91CF9108951F93CF93DF93CDB72C -:105DA000DEB76B970FB6F894DEBF0FBECDBFAB0169 -:105DB00019821C8222E0BC01CE01019617DF182F48 -:105DC000882321F0CE010196CEDF182FCE01019657 -:105DD0001EDD812F6B960FB6F894DEBF0FBECDBFD0 -:105DE000DF91CF911F9108952F923F924F925F9232 -:105DF0006F927F928F929F92AF92BF92CF92DF92DB -:105E0000EF92FF920F931F93CF93DF9300D01F92D7 -:105E10001F92CDB7DEB78C015B013A01DC0113960E -:105E20008C9113978130C1F411968C9181FF14C02D -:105E300082FF18C0F801418952896389748980857D -:105E40009185A285B38584179507A607B70751F0FA -:105E5000C801F2DB811106C081E0F80180838FEF79 -:105E60009FEF37C1630183C0D80159968D919C91F2 -:105E70005A97FC01F481F1501A012B0169E0569404 -:105E80004794379427946A95D1F7F221FD834A010C -:105E900021E09222FF2309F476C080E092E0881985 -:105EA000990976018C159D0508F47C01D801599655 -:105EB000ED91FC915A9714962D903D904D905C90E9 -:105EC0001797B2E02B1A310841085108058404C025 -:105ED000220C331C441C551C0A94D2F786859785E6 -:105EE000A089B189280E391E4A1E5B1EED812E0E37 -:105EF000311C411C511CE114F2E0FF0609F089C07D -:105F00008091A40F9091A50FA091A60FB091A70F1B -:105F100082159305A405B50569F41092A10D8FEFC4 -:105F20009FEFDC018093A40F9093A50FA093A60F81 -:105F3000B093A70F9501B201A1018091A20D90919C -:105F4000A30D0E94ABA6882309F486CFF8018085B3 -:105F50009185A285B3858E0D9F1DA11DB11D8087E2 -:105F60009187A287B387AE0CBF1CCE18DF08D8017B -:105F700018964D915D916D917C911B97C114D10440 -:105F800009F072CF7AC08114910409F086CF14967B -:105F90004D915D916D917C9117974115510561056A -:105FA000710559F455968D919D910D90BC91A02D40 -:105FB0000097A105B10539F520C09E012F5F3F4F25 -:105FC0006AD1882309F448CF89819A81AB81BC8149 -:105FD000F801218D328DF9012789203139F4883F6C -:105FE000FFEF9F07A105B10540F40DC0883F2FEFDB -:105FF0009207A2072FE0B20730F0C8010E94CDA798 -:1060000081114BCF29CFF80184839583A683B78371 -:1060100044CF8114910411F5D80118964D915D91EA -:106020006D917C911B9751968D919D910D90BC9196 -:10603000A02D481759076A077B0780F0B4D0882342 -:1060400009F40ACF81E08093A10D2092A40F309231 -:10605000A50F4092A60F5092A70F07C041E0C201C2 -:10606000B101E1D0882309F4F7CEA701B501C4013D -:106070008C55924F0F9408C969CF51968D919D917F -:106080000D90BC91A02DF801218184179507A607DA -:10609000B70738F4418B528B638B748B2068218354 -:1060A0000CC080919B0D90919C0D892B31F0611457 -:1060B000710419F02068F8012183D80111968C91A0 -:1060C00083FD02C0C30105C0C8014FDB8111FACFB7 -:1060D000C3CE0F900F900F900F900F90DF91CF9144 -:1060E0001F910F91FF90EF90DF90CF90BF90AF90F6 -:1060F0009F908F907F906F905F904F903F902F90E8 -:106100000895CF93DF931F92CDB7DEB72091F21A97 -:106110003091F31ACE0101962115310519F0821B39 -:10612000930B02C08E5F9A410F90DF91CF9108953B -:1061300082EA92EAA0E0B0E08093FE1A9093FF1A00 -:10614000A093001BB093011B089581E04091FE1ABB -:106150005091FF1A6091001B7091011B423A524A04 -:106160006105710509F080E00895CF93DF931F92D8 -:10617000CDB7DEB7698341E050E0BE016F5F7F4F6E -:10618000049632DE0F90DF91CF91089504962CCEC5 -:10619000FB0101900020E9F7AF0141505109461B76 -:1061A000570B049621CECF938091A10D8823B9F18E -:1061B0004091A40F5091A50F6091A60F7091A70F69 -:1061C00024EA3DE08091A20D9091A30D0E94ABA620 -:1061D000C82F811102C0C0E023C040919D0D509195 -:1061E0009E0D60919F0D7091A00D411551056105A7 -:1061F000710591F024EA3DE08091A20D9091A30DEC -:106200000E94ABA6882339F310929D0D10929E0D2B -:1062100010929F0D1092A00D1092A10D01C0C1E02F -:106220008C2FCF910895CF92DF92EF92FF92CF9370 -:106230006B017C01C42F8091A40F9091A50FA091B8 -:10624000A60FB091A70F8C159D05AE05BF05C9F02F -:10625000AADF811102C080E018C024EA3DE0B70146 -:10626000A6018091A20D9091A30D0E9436A68823CD -:1062700091F3C092A40FD092A50FE092A60FF092D6 -:10628000A70F81E0C1118093A10DCF91FF90EF90F6 -:10629000DF90CF9008958F929F92AF92BF92CF924E -:1062A000DF92EF92FF920F931F93CF93DF93EC0156 -:1062B0006A017B01890189859A85AB85BC85019638 -:1062C000A11DB11D84179507A607B70710F480E03C -:1062D00054C08F89803129F49927872F762F652F15 -:1062E0000BC08032A1F7CB01BA0127E096958795C4 -:1062F000779567952A95D1F78B889C88AD88BE885D -:10630000680D791D8A1D9B1D8090A40F9090A50F8C -:10631000A090A60FB090A70F681579058A059B0578 -:1063200081F48F89803191F4DD24EE24FF24F6017D -:10633000EE0FFF1FEC55F24F80819181A0E0B0E09D -:1063400016C040E070DF8111ECCFC1CFE894C7F8F0 -:10635000DD24EE24FF24F601EE0FFF1FEE0FFF1FDA -:10636000EC55F24F80819181A281B381BF70F80119 -:1063700080839183A283B38381E0DF91CF911F91CA -:106380000F91FF90EF90DF90CF90BF90AF909F90D4 -:106390008F9008954F925F926F927F92AF92BF92CB -:1063A000CF92DF92EF92FF920F931F93CF93DF93E1 -:1063B00000D01F92CDB7DEB78C0149835A836B831F -:1063C0007C835901C12CD12C7601412C42E0542E02 -:1063D000612C712C49815A816B817C819E012F5FD8 -:1063E0003F4FC80158DF882341F1D301C201F801B2 -:1063F000058404C0880F991FAA1FBB1F0A94D2F7F7 -:10640000C80ED91EEA1EFB1E49815A816B817C8110 -:106410008789803139F481E0483F5F4F610571051C -:1064200038F4D8CF81E0483F5F4F6F4F7F4090F204 -:10643000F501C082D182E282F3820F900F900F901B -:106440000F90DF91CF911F910F91FF90EF90DF9010 -:10645000CF90BF90AF907F906F905F904F900895D6 -:106460004F925F926F927F928F929F92AF92BF9264 -:10647000CF92DF92EF92FF920F931F93CF93DF9310 -:10648000EC014A015B0128013901423051056105E7 -:10649000710508F462C049855A856B857C854F5F1C -:1064A0005F4F6F4F7F4F481559056A057B0508F40C -:1064B00054C08F89803129F4FF24EB2CDA2CC92CAD -:1064C0000CC0803209F049C07501640177E0F69490 -:1064D000E794D794C7947A95D1F74B895C896D89F5 -:1064E0007E89C40ED51EE61EF71E41E0C701B60127 -:1064F0009ADE882391F19F89903159F49924AA2436 -:10650000BB24F401EE0FFF1FEC55F24F5182408285 -:1065100010C0E89487F89924AA24BB24F401EE0F54 -:10652000FF1FEE0FFF1FEC55F24F40825182628237 -:1065300073829A89923090F04D815E816F81788567 -:106540004C0D5D1D6E1D7F1D40939D0D50939E0D46 -:1065500060939F0D7093A00D01C080E0DF91CF91FB -:106560001F910F91FF90EF90DF90CF90BF90AF9071 -:106570009F908F907F906F905F904F9008952F9293 -:106580003F924F925F926F927F928F929F92AF92C3 -:10659000BF92CF92DF92EF92FF920F931F93CF9310 -:1065A000DF93CDB7DEB72F970FB6F894DEBF0FBEDF -:1065B000CDBF1C014C875D876E877F873B872A870D -:1065C000DC0119960D911D912D913C911C970F5F47 -:1065D0001F4F2F4F3F4F0D831E832F833887EA8530 -:1065E000FB8580809180A280B38081149104A104F6 -:1065F000B10431F0FFEF8F1A9F0AAF0ABF0A10C033 -:10660000DC018D909D90AD90BC90B1E0B9870C8578 -:106610001D852E853F85013011052105310509F0C5 -:10662000198675016401412C512C3201F1018185DB -:106630009285A385B485481659066A067B0608F03C -:106640004EC00D811E812F8138850C151D052E052C -:106650003F0550F4F2E0CF2ED12CE12CF12CA2E03A -:106660008A2E912CA12CB12C9E012F5F3F4FB70198 -:10667000A601C10110DE882391F149815A816B8105 -:106680007C81D701C6010196A11DB11D452B462B6A -:10669000472B19F04C015D010FC0AC01BD01481939 -:1066A00059096A097B090C851D852E853F85401790 -:1066B00051076207730741F01FEF411A510A610A3F -:1066C000710A6C017D01B2CF0FEF1FEF2FEF3FE09A -:1066D000B701A601C101C4DE8D83811113C01D82E3 -:1066E0003DC02601370121E0421A510861087108B6 -:1066F00097018601B301A201C101B2DE882379F3BB -:10670000730162018C149D04AE04BF0450F3AA858A -:10671000BB854D915D916D917C9141155105610550 -:106720007105A9F4EA85FB8580829182A282B382F9 -:10673000F985FF2399F00FEF801A900AA00AB00A9A -:10674000D1018D929D92AD92BC92139707C0950195 -:106750008401C10185DE8111E5CFC1CF8D812F96E6 -:106760000FB6F894DEBF0FBECDBFDF91CF911F9162 -:106770000F91FF90EF90DF90CF90BF90AF909F90E0 -:106780008F907F906F905F904F903F902F900895E3 -:10679000AF92BF92CF92DF92EF92FF920F931F932F -:1067A000CF93DF9300D01F92CDB7DEB75C016A01B3 -:1067B0007B0182E090E0A0E0B0E0F501808391836E -:1067C000A283B3839E012F5F3F4FB701A601C5018E -:1067D00062DD811102C080E023C000E010E098017A -:1067E000B701A601C5013CDE8823A9F3C980DA8080 -:1067F000EB80FC80F5018789803149F481E0F8EF76 -:10680000CF16FFEFDF06E104F10450F4DBCF81E0A7 -:1068100098EFC9169FEFD906E9069FE0F90690F2B6 -:106820000F900F900F900F90DF91CF911F910F91CC -:10683000FF90EF90DF90CF90BF90AF9008957F9240 -:106840008F929F92AF92BF92CF92DF92EF92FF9280 -:106850000F931F93CF93DF93EC01142F7093A30D2D -:106860006093A20D1F8A82E090E0A0E0B0E08883F0 -:106870009983AA83BB831092A10D10929D0D109253 -:106880009E0D10929F0D1092A00D8FEF9FEFDC01D7 -:106890008093A40F9093A50FA093A60FB093A70F7A -:1068A000442349F1453008F0DEC040E060E070E08C -:1068B000CB01B9DC882309F4D6C020E1129FF00196 -:1068C0001124EE5AF04F80818F7709F0CCC0848577 -:1068D0009585A685B78584369105A105B10508F48F -:1068E000C2C0C084D184E284F384C114D104E10421 -:1068F000F10421F4B8C0C12CD12C760140E0C701CD -:10690000B60191DC782E882309F4ADC08091AF0DDB -:106910009091B00D8115924009F0A5C03091B40D51 -:10692000332309F4A0C08091B20D9091B30D892B4F -:1069300009F499C02091B10D222309F494C03A8B37 -:106940002C831D8630E041E050E06D85062FCA01A2 -:10695000062E02C0880F991F0A94E2F728173907FC -:1069600031F081E0860F8D87683078F37CC020910C -:10697000BA0D3091BB0D2115310519F040E050E002 -:1069800008C02091C80D3091C90D4091CA0D509199 -:10699000CB0D2D833E834F8358878091B20D90910C -:1069A000B30D46015701880E991EA11CB11C8B8A9C -:1069B0009C8AAD8ABE8AE091B50DF091B60DF98F33 -:1069C000E88FA091B40DB0E00F949FC5680D791DBC -:1069D0008A1D9B1D6A8F7B8F8C8F9D8FB5E0EE0F7C -:1069E000FF1FBA95E1F7E150FE4FEF2FFF27E69525 -:1069F000DC01CB018E0F9F1FA11DB11D8E879F87CC -:106A0000A88BB98B8090B70D9090B80D811491042C -:106A100019F0A12CB12C08C08090C40D9090C50D28 -:106A2000A090C60DB090C70DA7019601281B390B89 -:106A30004A0B5B0BDA01C901880D991DAA1DBB1D0C -:106A400004C0B695A795979587950A95D2F789873B -:106A50009A87AB87BC87853F3FE09307A105B105C7 -:106A600020F48CE08F8B712C15C0853F9F4FA105C2 -:106A7000B10510F480E10DC08091D00D9091D10D41 -:106A8000A091D20DB091D30D8A8F9B8FAC8FBD8F0B -:106A900080E28F8B872DDF91CF911F910F91FF9017 -:106AA000EF90DF90CF90BF90AF909F908F907F90AE -:106AB000089590911909911107C09091C00095FF18 -:106AC000FCCF8093C6000895913031F49091C800B6 -:106AD00095FFFCCF8093CE000895FC0114821782AD -:106AE0001382128283E695E0918380830895CF928A -:106AF000DF92EF92FF920F931F93CF93DF93EC01FE -:106B00008B5A9F4FEADFCE018A589F4FE6DF7E0106 -:106B100025E9E20EF11C87016E0135E3C31A3EEF51 -:106B2000D30AC801DADF015E1F4F0C151D05C9F736 -:106B3000FE01ED5CFD4F89E181831482158236965A -:106B4000178ACE01895A9D4FC8DFFE01E353FE4FDD -:106B500011821082E55CFE4F108211821282138234 -:106B6000389610821182128213821A821B82188236 -:106B700019826E0184EFC81A8CEFD80AF6011082D0 -:106B8000118212821382F80111821082FE01EA58EA -:106B9000FD4F108286E391E0F7019C011192215094 -:106BA0003040E1F7FE01EC5EFC4F81E08083CD5A7E -:106BB000DF4F198218820F9498B768577C4E8F4F19 -:106BC0009F4FF6016083718382839383DF91CF911E -:106BD0001F910F91FF90EF90DF90CF900895FC01EF -:106BE00020E03EE2DB014C91403241F0283011F4CC -:106BF00030833196DB014C91408331962F5F6F5F7C -:106C00007F4F2B3079F7108208952BE1FB013496EA -:106C1000DC01149601900D922A95E1F7FB01228187 -:106C20003381FC013383228323E635E031832083E3 -:106C300008952F923F924F925F926F927F928F9220 -:106C40009F92AF92BF92CF92DF92EF92FF920F93FB -:106C50001F93CF93DF93CDB7DEB7CA57D1090FB6D5 -:106C6000F894DEBF0FBECDBF8C017B012A01390134 -:106C70002DB73EB7E5963FAF2EAFE597AD961FAE69 -:106C8000AD971A0134E0230E311C4D96E7969FAF65 -:106C90008EAFE797F801EE5AFF4FE996FFAFEEAFE0 -:106CA000E99798012B5E3C4FE1963FAF2EAFE197FD -:106CB00086509D4FAF969FAF8EAFAF97580194E02F -:106CC000A90EB11C6E01EFE5CE0ED11C20E430E020 -:106CD0002C0F3D1F2C5F3F4FEB963FAF2EAFEB9736 -:106CE000E7964EAD5FADE797BE016F5F7F4FC10185 -:106CF0000E9469AA18160CF024C13C85232F287124 -:106D0000203109F07AC0E196EEADFFADE1978081C8 -:106D100091810197029708F470C02DB73EB7E396B2 -:106D20003FAF2EAFE397BE016F5F7F4FC60157DFC6 -:106D300081E0F7019081911158C0E1E0F0E0D601C7 -:106D40000D900020E9F7EC19FD09EA0FFB1F3196C1 -:106D50002DB73EB72E1B3F0B0FB6F8943EBF0FBEAC -:106D60002DBFEDB7FEB731964F01882319F067E6C6 -:106D700075E001C0B701C4010F944AC9B601C4014E -:106D80000F942BC967E675E0C4010F942BC9CE019F -:106D9000805C9F4FA2DE21E0A601B101EB968EAD93 -:106DA0009FADEB970E94F6ADBE01605C7F4FCE01B8 -:106DB00081962BDF20E030E0AE014F5D5F4FB401E4 -:106DC000C80137DFCE0181960E94D4A3CE01805C3A -:106DD0009F4F0E94D4A3E3962EAD3FADE3970FB62D -:106DE000F8943EBF0FBE2DBF7BCF80E00190002006 -:106DF000E9F73197EE19FF09A2CF8981882309F4B9 -:106E0000A0C0853E09F46CCF8E3209F469CFF80139 -:106E1000858D8E3209F464CF3A7009F061CF81E03C -:106E2000203109F080E0E996EEADFFADE99780836F -:106E3000811108C08985873409F052CF8A858E3741 -:106E400009F44ECFE196EEADFFADE19780819181DF -:106E50008130910569F08230910591F1892B09F01B -:106E60003FCFBE016F5F7F4FC501B9DE47010AC04A -:106E7000AF96EEADFFADAF97808191810196918382 -:106E800080832ECFF40181914F01882311F011DE10 -:106E9000F9CF4501F40181914F01882311F009DEFA -:106EA000F9CF80E206DE4D8D5E8D6F8D78A12AE0F0 -:106EB00030E084E998E00E94E9448AE0FADD10CFEE -:106EC000BE016F5F7F4FC5018ADEF201808591852B -:106ED000A285B385F801858B968BA78BB08FF201C5 -:106EE00084859585A685B785F801818F928FA38FBC -:106EF000B48F89899A89948B838B8F859889928B9B -:106F0000818B6114710439F0B501C3010F9418C964 -:106F1000892B79F416C0AD96FFADAD972F2F30E0D9 -:106F2000AF96EEADFFADAF978081918128173907FD -:106F300041F0AD96FFADAD97FF5FAD96FFAFAD975A -:106F4000CFCEE5962EAD3FADE5970FB6F8943EBF98 -:106F50000FBE2DBFC658DF4F0FB6F894DEBF0FBE71 -:106F6000CDBFDF91CF911F910F91FF90EF90DF90F8 -:106F7000CF90BF90AF909F908F907F906F905F90D9 -:106F80004F903F902F9008950F931F93CF93DF93CF -:106F9000CDB7DEB76F970FB6F894DEBF0FBECDBF8B -:106FA0008C01FC01EB5EFC4F1182108240E050E04E -:106FB000BA01875A9F4F0E941CABB8016B5A7F4F92 -:106FC000CE01019622DE20E030E0AE014F5F5F4F40 -:106FD00063EB75E0C8012DDECE0101960E94D4A3BB -:106FE0006F960FB6F894DEBF0FBECDBFDF91CF9185 -:106FF0001F910F9108952BE1FB013496DC0114964B -:1070000001900D922A95E1F7FB0122813381FC0169 -:10701000338322830895FC01128213820895FC01B8 -:107020002381222311F021E022830895FC01228193 -:1070300021111282089585539E4FFC018081918118 -:107040000895AF92BF92CF92DF92EF92FF920F938B -:107050001F93CF93DF931F92CDB7DEB78C018FE2E2 -:10706000FB0181935F01D12C41E07801F5E3EF1A38 -:10707000FEEFFF0A8FE1C82E2D2D30E0F701808151 -:10708000918128173907D8F4C29EC001C39E900D84 -:10709000112487569F4FB501800F911F49830E948D -:1070A000B4A8C50149815C010196F5012081222324 -:1070B00021F04D3810F44F5FF6CFD394DDCF47FD6C -:1070C00011C0B501C801855A9D4F0F90DF91CF9136 -:1070D0001F910F91FF90EF90DF90CF90BF90AF90F6 -:1070E0000C94B4A8F50110820F90DF91CF911F91FD -:1070F0000F91FF90EF90DF90CF90BF90AF900895E9 -:10710000885F9C4FFC016081718182819381089529 -:107110008F929F92AF92BF92CF92DF92EF92FF92A7 -:107120000F931F93CF93DF931F92CDB7DEB77C01F0 -:10713000FC018281882309F49EC08701035E1F4FF2 -:10714000F80181918F01882311F0B3DCF9CFE9E4D4 -:10715000F1E184918F01882331F0ABDC0F5F1F4F89 -:10716000F8018491F8CFE1EFF6E4C590D490F601F0 -:107170008491882329F09DDCFFEFCF1ADF0AF7CF37 -:10718000F701E05FFC4F40815181628173812AE009 -:1071900030E084E998E00E94E944E7E4F1E1849179 -:1071A0008F01882331F085DC0F5F1F4FF801849138 -:1071B000F8CFF701E85FFC4F408151816281738114 -:1071C0002AE030E084E998E00E94E9448AE071DC3A -:1071D0000F9498B720E6C22E2AEED22EE12CF12C85 -:1071E000A70196010F9446C549015A016091A00973 -:1071F0007091A1098091A2099091A309A70196011C -:107200000F9446C5821A930AC4016CE370E00F9490 -:107210001FC56983CE0101960F94894D8C01F80139 -:1072200081918F01882311F044DCF9CF40E050E0D8 -:107230006AE384E998E00E942045C4016CE370E0B1 -:107240000F941FC58983CE0101960F94894D8C013F -:10725000F80181918F01882311F02BDCF9CFE5E44F -:10726000F1E184918F018823A1F023DC0F5F1F4F90 -:10727000F8018491F8CFE9E6F5E084918F01882345 -:1072800031F017DC0F5F1F4FF8018491F8CF8AE0CF -:1072900010DC0F90DF91CF911F910F91FF90EF9035 -:1072A000DF90CF90BF90AF909F908F900895AF9256 -:1072B000BF92CF92DF92EF92FF920F931F93CF93E3 -:1072C000DF935C01EB01FB0101900020E9F78F01E6 -:1072D00001501109061B170B6C01F5EACF1AFDEFDF -:1072E000DF0AF60110826EE470E0CE010F9436C919 -:1072F0007C01009729F4F8013197EC0FFD1F0DC0B8 -:1073000060E270E00F9436C9EC0121966AE270E009 -:10731000C7010F9436C9FC0131978DE081838AE063 -:1073200082831382BE01C501895A9D4F0E94C8B055 -:10733000F6018081882311F1EAE1FFE08491EF01F9 -:10734000882329F0B6DB2196FE018491F9CFE1E094 -:10735000F7E4C591D491FE018491882319F0A9DB4B -:107360002196F9CF8AE0DF91CF911F910F91FF9085 -:10737000EF90DF90CF90BF90AF909BCBDF91CF91FC -:107380001F910F91FF90EF90DF90CF90BF90AF9043 -:107390000895CF93DF93EC0140E450E0895A9D4F6C -:1073A0000E94C6B0C55ADD4F8881882301F1EAE109 -:1073B000FFE08491EF01882329F07BDB2196FE0119 -:1073C0008491F9CFE1E0F7E4C591D491FE01849175 -:1073D000882319F06EDB2196F9CF8AE06ADB66E735 -:1073E00075E084E998E0DF91CF910C943345DF910B -:1073F000CF9108950F931F93CF93DF93EC018C01EE -:10740000055A1D4FC8010E94B5ABC8010E94FFABD1 -:1074100018821982DF91CF911F910F910895CF9219 -:10742000DF92EF92FF920F931F93CF93DF93CDB72D -:10743000DEB76F970FB6F894DEBF0FBECDBF8C01DD -:107440006A017C0184E7E80EF11CC8018A589F4F4D -:10745000F70191838083EF55FD4F22E030E03183C7 -:10746000208332967183608340E050E0BA01049635 -:107470000E941CABF70160817181CE010196C5DBD2 -:107480009601AE014F5F5F4F63EB75E0C801D1DB42 -:10749000CE0101960E94D4A36F960FB6F894DEBF7A -:1074A0000FBECDBFDF91CF911F910F91FF90EF9055 -:1074B000DF90CF9008953F924F925F926F927F92AC -:1074C0008F929F92AF92BF92CF92DF92EF92FF92F4 -:1074D0000F931F93CF93DF93CDB7DEB7AC970FB663 -:1074E000F894DEBF0FBECDBF8C016B01342EFC01C2 -:1074F0008381882309F495C2E25AFD4F8081882355 -:1075000009F4E3C02111B7C07801FAE8EF1AFDEFE2 -:10751000FF0AF7018081882341F1EAE1FFE08491CD -:107520008F01882331F0C5DA0F5F1F4FF801849176 -:10753000F8CFE7ECF1E184918F01882331F0B9DADB -:107540000F5F1F4FF8018491F8CF4AE050E061E0EF -:1075500070E084E998E00E9428458AE0AADA61E0B8 -:1075600083EB95E00E94A45E5CC2E4E1FFE08491BD -:107570005F01882339F09DDAFFEFAF1ABF0AF501EA -:107580008491F7CFEEEAF1E184915F01882339F02D -:1075900090DAFFEFAF1ABF0AF5018491F7CF5601D9 -:1075A000F50181915F01882311F083DAF9CFE3EAD5 -:1075B000F1E184915F01882339F07BDAFFEFAF1AA4 -:1075C000BF0AF5018491F7CFF70180813DE8B32E22 -:1075D000B801B89E600D711D112465587D4FC8011A -:1075E00030DDF70180819801B89E200D311D1124F6 -:1075F000C90185589D4F5C01F50181915F01882388 -:1076000011F057DAF9CFEDE9F1E184915F018823B8 -:1076100039F04FDAFFEFAF1ABF0AF5018491F7CFC7 -:107620005801F0EFAF1AFCEFBF0AF501408151811C -:10763000628173812AE030E084E998E00E94E944A5 -:107640008AE037DAF7012081F80134E0239FE00D6A -:10765000F11D1124AF0149585D4FF50180819181E1 -:10766000A281B381FA0180839183A283B3832F5FC8 -:10767000F701208324C0E4E1FFE084917F018823A7 -:1076800039F017DAFFEFEF1AFF0AF7018491F7CF0D -:10769000ECE8F1E184917F01882339F00ADAFFEF09 -:1076A000EF1AFF0AF7018491F7CF7601F701819174 -:1076B0007F01882311F0FDD9F9CF8AE0FAD9C801FA -:1076C000855A9D4F0E94FFAB28C0F801EA58FD4F34 -:1076D0001082E4E1FFE084917F01882339F0E9D949 -:1076E000FFEFEF1AFF0AF7018491F7CFEBE7F1E123 -:1076F00084917F01882339F0DCD9FFEFEF1AFF0A6C -:10770000F7018491F7CF7601F70181917F018823FA -:1077100011F0CFD9F9CF8AE0CCD9F80112829E01BD -:107720002F5F3F4F5901C901D8D9280134E7430ED3 -:10773000511CC8018B5A9F4FF20191838083F6013F -:1077400080818F3209F075C06FE270E0C6010F943E -:1077500036C901967C01E114F10409F470C06FE2AE -:1077600070E0C7010F9436C94C01009709F468C056 -:10777000E816F90608F064C03C016E187F08A30102 -:10778000B701CE0180960F945FC9E0E2F0E0EC0F04 -:10779000FD1FE60DF71D10829E01205E3F4F79010F -:1077A000F70181917F01882311F083D9F9CF8AE015 -:1077B00080D9F201608171816115710519F06C5FEA -:1077C0007F4F02C060E070E021E0AE01405E5F4F9D -:1077D000CE0105960E94F6AD811123C0E3EFF6E4D9 -:1077E00005911491F8018491882321F062D90F5FEB -:1077F0001F4FF8CF8E01005E1F4FF80181918F015E -:10780000882311F056D9F9CFE9E7F1E184918F018E -:10781000882309F4B7C04DD90F5F1F4FF801849139 -:10782000F7CFF201B182A0827401FFEFEF1AFF0AD5 -:1078300092CFC8018A589F4FF201918380837601CD -:107840009801255A3D4F4901F20160817181332031 -:1078500009F49BC06115710519F06C5F7F4F02C080 -:1078600060E070E021E0A701C4010E94F6AD88232A -:1078700009F469C0F40181899289A389B489F80166 -:10788000E85FFC4F80839183A283B383EFEFF6E43C -:10789000C590D490F60184919801285F3C4F49012E -:1078A000882339F006D93FEFC31AD30AF601849131 -:1078B000F7CF6701F60181916F01882311F0F9D8A4 -:1078C000F9CFEBEEF6E4C590D490F60184918823CD -:1078D00029F0EFD8FFEFCF1ADF0AF7CFF40140818C -:1078E0005181628173812AE030E084E998E00E944E -:1078F000E9448AE0DED8F801E05FFC4F1082118293 -:1079000012821382EDEFF6E4C590D490F6018491D3 -:10791000882329F0CED8FFEFCF1ADF0AF7CF8AE00D -:10792000C8D8A70160E070E0C80179DDF801858D55 -:10793000882319F0C8014D9601C0C7010F94A549CD -:107940008DE995E069C0E3EFF6E405911491F80143 -:107950008491882321F0ADD80F5F1F4FF8CFF70136 -:1079600081917F01882311F0A4D8F9CFE7E7F1E1F5 -:1079700084918F01882331F09CD80F5F1F4FF8014D -:107980008491F8CF8AE095D849C06115710519F046 -:107990006C5F7F4F02C060E070E026E5A701C40184 -:1079A0000E94F6AD81111FC0E3EFF6E4059114913A -:1079B000F8018491882321F07CD80F5F1F4FF8CF06 -:1079C000F70181917F01882311F073D8F9CFE5E7A2 -:1079D000F1E184918F018823A9F26BD80F5F1F4FCB -:1079E000F8018491F8CF81E0F8018083E7EEF6E4B6 -:1079F00005911491F8018491882321F05AD80F5FE2 -:107A00001F4FF8CFF60181916F01882311F051D8F3 -:107A1000F9CF8AE04ED8C7010F94A549C5010E944D -:107A2000D4A3AC960FB6F894DEBF0FBECDBFDF91E6 -:107A3000CF911F910F91FF90EF90DF90CF90BF906B -:107A4000AF909F908F907F906F905F904F903F90FE -:107A5000089521E0FC01218340E02DCDEF92FF92BB -:107A60000F931F93CF93DF93CDB7DEB7A1970FB6D8 -:107A7000F894DEBF0FBECDBF8C017C0184E7E80E19 -:107A8000F11CC8018A589F4FF70191838083EF55FD -:107A9000FD4FA2E0B0E0B183A08332961182108244 -:107AA000049628A339A30E941CABF7016081718161 -:107AB000CE010196AAD828A139A1AE014F5F5F4F30 -:107AC00063EB75E0C801B5D8CE0101960E94D4A33E -:107AD000A1960FB6F894DEBF0FBECDBFDF91CF9158 -:107AE0001F910F91FF90EF900895CF92DF92EF9248 -:107AF000FF920F931F93CF93DF93CDB7DEB76F97AE -:107B00000FB6F894DEBF0FBECDBF8C016C0124E729 -:107B1000C20ED11C8A589F4FF60191838083EF5586 -:107B2000FD4F21E030E0318320837801F9EEEF1A38 -:107B3000FCEFFF0AF7011182108240E050E0BA0129 -:107B400004960E941CABF60160817181CE01019602 -:107B50005CD820E030E0AE014F5F5F4F63EB75E033 -:107B6000C80167D8CE0101960E94D4A3F701808195 -:107B700091816F960FB6F894DEBF0FBECDBFDF9137 -:107B8000CF911F910F91FF90EF90DF90CF900895CC -:107B9000FC01E353FE4F208131816217730738F4F3 -:107BA000680F791FFB01E153FE4F608170E040E0F8 -:107BB00050E035CCFC01E353FE4F80819181892B4D -:107BC00011F01182108208952F923F924F925F928E -:107BD0006F927F928F929F92AF92BF92CF92DF92DD -:107BE000EF92FF920F931F93CF93DF93CDB7DEB742 -:107BF000C155D1090FB6F894DEBF0FBECDBF8C01C1 -:107C00002DB73EB72E963FAF2EAF2E978091811A9B -:107C10008111FEC18091030180FDFAC189E09FE0DE -:107C20000F94EDCC8BAF823009F4F2C182E090E08A -:107C30009093180280931702C801BCDFC80155DF7A -:107C40005C01009709F4ABC14DB75EB722965FAFF8 -:107C50004EAF22978536910570F0E091460AF0E02C -:107C6000EE0FFF1FE759F74B859194910F94EC931A -:107C7000E4E6AE2EB12C0F9459480F944249E0919E -:107C8000460AF0E0EE0FFF1FEF5AF94B4591549171 -:107C900061E080E00F94656CC501880F991F880F23 -:107CA000991FEDB7FEB7E81BF90B0FB6F894FEBFAE -:107CB0000FBEEDBF2DB73EB72F5F3F4F3DAF2CAF8F -:107CC000F801118E128E138E148EF1E0AF16B104EE -:107CD00009F453C16901E12CF12C8091030180FD6D -:107CE00060C10F94112AF801EE0DFF1DE153FE4F04 -:107CF000E082F801818D928DA38DB48DF601819380 -:107D00009193A193B1936F0140E050E0B701C80196 -:107D100086DBFFEFEF1AFF0AEA14FB04F0F2B5016D -:107D20006150710980E090E00F940FC120E030E0D5 -:107D300040E05FE30F9444C36B017C01B50180E038 -:107D400090E00F940FC19B01AC01C701B6010F94E5 -:107D500044C30F94E3C01501C12CD12C76019B01C3 -:107D600040E050E062962CAF3DAF4EAF5FAF629700 -:107D7000A8014C5F5F4F58AF4FABC8014D969AAF0B -:107D800089AFF801EE5AFF4FFFAFEEAF41E0241A82 -:107D9000310809F4F6C08091030180FD02C1A4E618 -:107DA000B0E0A70196010F949FC562962CAD3DAD42 -:107DB0004EAD5FAD62970F9446C5822F65E00F947C -:107DC00012C5882E992487FC9094612C712C68141C -:107DD000790434F442EB55E062E0862D0F94764846 -:107DE000FFEF6F1A7F0A24E16216710481F73FEFFB -:107DF000C31AD30AE30AF30A380126961FAE269760 -:107E00008091030180FDCDC00F94112AA30141533D -:107E10005E4F24965FAF4EAF2497FA0150809301D6 -:107E200020533E4F28963FAF2EAF2897F901F0819F -:107E30002596FFAF25972F2F30E02A963FAF2EAF24 -:107E40002A974FEFC41AD40AE40AF40AECADFDAD48 -:107E500054E0559EE00DF11D112440815181628155 -:107E6000738120E030E0C801F9DDF801858D8823B9 -:107E700019F069AD7AAD02C06FA978ADCE01019657 -:107E80000F944AC9F80183889488218932892C96F5 -:107E90003FAF2EAF2C97EEADFFAD40802A96EEADF2 -:107EA000FFAD2A97EE0FFF1FEE0FFF1F2CAD3DAD6C -:107EB000E20FF31F408151816281738120E030E045 -:107EC000C801CCDDF801858D882319F069AD7AAD44 -:107ED00002C06FA978ADFBADF1111CC0EEADFFADD6 -:107EE0008081481214C0F801838994898816990604 -:107EF00051F4818992892C962EAD3FAD2C97821733 -:107F00009307D0F02AC088159905B0F026C041101B -:107F100013C023C03BAD313001F5EEADFFAD808124 -:107F2000481208C0CE0101960F9418C918161906F8 -:107F30001CF013C0411011C025962FAD2597249633 -:107F4000EEADFFAD249720832896EEADFFAD2897C8 -:107F50005082F1E02696FFAF26972FEF621A720A41 -:107F6000C301801B910B8215930508F449CF269617 -:107F70003FAD269731110ACF04C0F801E153FE4FFF -:107F80001082F801E353FE4FB182A08222968EAD9B -:107F90009FAD22970FB6F8949EBF0FBE8DBF10E025 -:107FA0000AC02296EEADFFAD22970FB6F894FEBF41 -:107FB0000FBEEDBF2DC042EB55E062E0812F0F9464 -:107FC00076481F5F1431B9F76CE271E080E090E011 -:107FD0000F94C7B70F9441490F94594882E00F940A -:107FE0003C8482E00F943C8481E090E090931802FE -:107FF000809317020F9498B7605D7A488F4F9F4F18 -:108000006093E2197093E3198093E4199093E51952 -:108010002E962EAD3FAD2E970FB6F8943EBF0FBEF5 -:108020002DBFCF5ADF4F0FB6F894DEBF0FBECDBFC6 -:10803000DF91CF911F910F91FF90EF90DF90CF9044 -:10804000BF90AF909F908F907F906F905F904F9078 -:108050003F902F900895EF92FF920F931F93CF932D -:10806000DF93EC011B82FC01E45AFF4F80818823DF -:1080700029F0CE01875A9F4F0E94FFAB7E018DEC05 -:10808000E81A8DEFF80A4DE460E0C7010E9483A56D -:10809000811133C0E4E1FFE084918F01882339F03E -:1080A0000E9459B50F5F1F4FF8018491F7CFEBEF96 -:1080B000F6E405911491F8018491882329F00E9437 -:1080C00059B50F5F1F4FF7CF8AE00E9459B58E0157 -:1080D0000B5A1F4FB801CE018A589F4F0E94FBB721 -:1080E000FE01EC58FF4F11830083CE01DF91CF9149 -:1080F0001F910F91FF90EF9067CD8E01075C1D4F90 -:1081000041E0B701C8010E941FB4811122C040E0C4 -:10811000B701C8010E941FB481111BC0EAE1FFE052 -:1081200084918F01882339F00E9459B50F5F1F4F4A -:10813000F8018491F7CFE9EEF6E405911491F80186 -:108140008491882309F4C0CF0E9459B50F5F1F4F57 -:10815000F6CFB801CE01875A9F4F0E940DA9811119 -:108160001BC0EAE1FFE084918F01882339F00E946F -:1081700059B50F5F1F4FF8018491F7CFE5EFF6E493 -:1081800005911491F8018491882309F49DCF0E94F0 -:1081900059B50F5F1F4FF6CF81E08B83E4E1FFE01D -:1081A00084918F01882339F00E9459B50F5F1F4FCA -:1081B000F8018491F7CFE3E0F7E405911491F80119 -:1081C0008491882309F480CF0E9459B50F5F1F4F17 -:1081D000F6CF2F923F924F925F926F927F928F9243 -:1081E0009F92AF92BF92CF92DF92EF92FF920F9346 -:1081F0001F93CF93DF93CDB7DEB7CC55D1090FB620 -:10820000F894DEBF0FBECDBF4C018C010C5E1C4F3D -:10821000662339F0F8011082F401838181111DC0B9 -:1082200015C0F8018081882309F4AFC0F401E45F30 -:10823000FC4FC080D180E280F3800F9498B7C616BF -:10824000D706E806F90608F4A0C0E4CFC40103DFAE -:10825000F4018381882309F498C07401F3E5EF0EDB -:10826000F11CF70181818F9380818F938CE391E1E1 -:108270009F938F938E01015C1F4F1F930F930F9459 -:10828000C1CA0F900F900F900F900F900F90B12CCC -:10829000F80101900020E9F73197E01BF10BBE16C1 -:1082A00084F46801CB0CD11CB7FCDA94F601808110 -:1082B000992787FD90950F9480C8F6018083B39429 -:1082C000E7CFF9E58F0E911C40E050E0BA01C40100 -:1082D0000E941CAB512CCE0101966C01F5E36F2E70 -:1082E000F1E17F2E5E0191E2A90EB11C40E050E069 -:1082F000B601C4010E9469AA1816DCF5412CF601EA -:1083000001900020E9F73197EC19FD094E1674F43D -:108310001601240C311C47FC3A94F101808190E055 -:108320000F9480C8F10180834394E9CF8A858E370A -:10833000E9F245E050E0B801C6010F9451C9892B1C -:10834000A9F61F930F937F926F92BF92AF920F94F3 -:10835000C1CA60E0C50110D461E081E391E10CD4B1 -:108360000F900F900F900F900F900F9055245394F3 -:10837000BDCF511004C08FEF9FEFF70104C0F7018C -:1083800080819181019691838083C45ADF4F0FB61B -:10839000F894DEBF0FBECDBFDF91CF911F910F913B -:1083A000FF90EF90DF90CF90BF90AF909F908F9015 -:1083B0007F906F905F904F903F902F9008954F92D5 -:1083C0005F926F927F928F929F92AF92BF92CF9265 -:1083D000DF92EF92FF920F931F93CF93DF93CDB76E -:1083E000DEB7AC970FB6F894DEBF0FBECDBF7C01F1 -:1083F0005B01FC018381882309F4F1C0C701855A20 -:108400009D4F0E94FFABF7011282CE0101966C01D5 -:108410000E946DB5270194E7490E511CC7018B5A84 -:108420009F4FF20191838083F50180818F3209F0A3 -:1084300075C06FE270E0C5010F9436C98C010F5F03 -:108440001F4F09F471C06FE270E0C8010F9436C984 -:108450004C01009709F469C00817190708F065C0B6 -:108460003C01601A710AA301B801CE0180960F94F5 -:108470005FC9E0E2F0E0EC0FFD1FE60DF71D108292 -:108480008E01005E1F4FF80181918F01882319F042 -:108490000E9459B5F8CF8AE00E9459B5F201608177 -:1084A00071816115710519F06C5F7F4F02C060E04A -:1084B00070E021E0AE01405E5F4FCE0105960E9464 -:1084C000F6AD811126C0E4EBF5E084918F0188239D -:1084D00039F00E9459B50F5F1F4FF8018491F7CF13 -:1084E0008E01005E1F4FF80181918F01882319F0E2 -:1084F0000E9459B5F8CFE3E7F1E184918F01882319 -:1085000009F467C00E9459B50F5F1F4FF8018491AD -:10851000F6CFF201D182C082840191CFC7018A587F -:108520009F4FF201918380838501F20180819181C7 -:10853000009711F0049602C080E090E0B8010E941C -:10854000CCAE882319F1E5E6F1E184915F0188233F -:1085500041F00E9459B5FFEFAF1ABF0AF5018491AF -:10856000F6CFF80181918F01882319F00E9459B547 -:10857000F8CF8AE00E9459B5F701E05FFC4F108206 -:10858000118212821382C7011FDB26C0EDE4F1E1E4 -:1085900084917F01882341F00E9459B5FFEFEF1AC3 -:1085A000FF0AF7018491F6CFF80181918F018823AA -:1085B00019F00E9459B5F8CFEBE4F1E184918F01F5 -:1085C000882339F00E9459B50F5F1F4FF80184913D -:1085D000F7CF8AE00E9459B5C6010E94D4A3AC9699 -:1085E0000FB6F894DEBF0FBECDBFDF91CF911F91C4 -:1085F0000F91FF90EF90DF90CF90BF90AF909F9042 -:108600008F907F906F905F904F900895AF92BF9240 -:10861000CF92DF92EF92FF920F931F93CF93DF934E -:10862000CDB7DEB76F970FB6F894DEBF0FBECDBFE4 -:108630008C017B01CE0101960E946DB5F801E358D3 -:10864000FF4F80816801811104C025E5C20ED11C55 -:1086500003C086E7C80ED11C21E0A701B6016C5FFC -:108660007F4FCE0105960E94F6AD811127C0E4E14F -:10867000FFE084918F01882339F00E9459B50F5F84 -:108680001F4FF8018491F7CFE5E0F7E405911491CD -:10869000F8018491882329F00E9459B50F5F1F4F7C -:1086A000F7CF8701F80181918F01882319F00E948B -:1086B00059B5F8CF8AE00E9459B538C0F801E553A2 -:1086C000FE4F808191818A30910530F59C012F5FAA -:1086D0003F4F318320832FE1289F7001299FF00CA9 -:1086E0001124F5E9EF0EF11CE00EF11E5C01B7015B -:1086F000C7014F960E94FBB721E0A21AB1088FE193 -:10870000E81AF108EFEFAE16BE0689F7B601C80108 -:108710008B569F4F0E94FBB7BE016F5F7F4FC80112 -:108720008A589F4F0E94FBB7C8014EDACE010196CE -:108730000E94D4A36F960FB6F894DEBF0FBECDBFD4 -:10874000DF91CF911F910F91FF90EF90DF90CF902D -:10875000BF90AF900895CF92DF92EF92FF920F9368 -:108760001F93CF93DF93EC018C0105531E4FF8014B -:1087700080819181009761F10197918380837E01CF -:10878000F5E9EF0EF11CB701CE018A589F4F0E9408 -:10879000FBB7C701E12CF12C6C01EFE1CE0ED11C2F -:1087A000F80120813181E216F30640F42FEFE21A3E -:1087B000F20AB6010E94FBB7C601EECFCE01DF91EF -:1087C000CF911F910F91FF90EF90DF90CF90FCC958 -:1087D000DF91CF911F910F91FF90EF90DF90CF909D -:1087E0000895EF92FF920F931F93CF93DF93EC01C5 -:1087F0000F94901D8E010A581D4FF80180819E0133 -:10880000255A3D4F79018823A9F1C9010E94FFAB88 -:10881000F801808181508083BE01FDE88F9F600D4B -:10882000711D112465587D4F21E041E0CE010E9469 -:108830005BBAF8018081FE0124E0829FE00DF11D0A -:108840001124E958FD4F4081518162817381FE01FD -:10885000E05FFC4F4083518362837383C7010E94B2 -:108860001CABCE01DF91CF911F910F91FF90EF9044 -:108870000C940FB80F941B1EC7010E94FFAB1A8205 -:10888000DF91CF911F910F91FF90EF900D94121EE9 -:10889000CF92DF92EF92FF920F931F93FB01108212 -:1088A0001182128213826B01A4E0EA2EF12C00E502 -:1088B00015E020E030E041E061E08D5C9D4F0E94DA -:1088C0004AA791E0811101C090E0892F1F910F917B -:1088D000FF90EF90DF90CF9008959091190991113A -:1088E00007C09091C00095FFFCCF8093C60008950B -:1088F000913031F49091C80095FFFCCF8093CE0069 -:108900000895CF93C62F2091CB0F3091CC0FE091DB -:10891000C90FF091CA0F2E173F0741F44091C70FBE -:108920005091C80F141615060CF44DC06091C40F79 -:108930007091C50FAF01480F591F161617067CF42A -:10894000E217F3077CF0BA0163597F4F6E3E714026 -:10895000C0F14C5F5F4F4E3E5140C8F415C0E21766 -:10896000F3073CF444595F4F81E04217530764F129 -:108970002AC0DA01A359BF4FAE3EB14010F14C5F9F -:108980005F4F4E3E514018F429363105D4F48459D6 -:108990009F4F82179307BCF44DEE51E04E1B5F0BC7 -:1089A00060E070E0CF018353904F0F9411C9CC2346 -:1089B00009F0F8941092CA0F1092C90FCC2309F055 -:1089C000789481E001C080E0CF9108958091C70F35 -:1089D0009091C80F181619060CF056C00197909385 -:1089E000C80F8093C70F892B99F48091C40F909181 -:1089F000C50F892B21F41092CA0F1092C90F8091D4 -:108A0000C90F9091CA0F9093CC0F8093CB0F3AC0AF -:108A10002091CB0F3091CC0F2D5F3F4F2F5F3F4FF9 -:108A2000F901E453F04F40814111F8CFC901382FCB -:108A3000292F8D3E41E0940740F09093CC0F809316 -:108A4000CB0F8D3E9140F1F40EC00196FC01E45332 -:108A5000F04F4081442359F33093CB0F2093CC0F38 -:108A6000832F922FEECF80E090E0382F292F0196B0 -:108A7000FC01E453F04F40814423B9F33093CB0F12 -:108A80002093CC0F81E0089580E008951092CC0FE0 -:108A90001092CB0F1092CA0F1092C90F1092C80FEC -:108AA0001092C70F1092C60F08950F931F93CF9384 -:108AB000DF93EC018036910514F080E052C0809184 -:108AC000C60F811104C082DF81E08093C60F409100 -:108AD000CB0F5091CC0F8091C90F9091CA0F4817BE -:108AE000590739F42091C70F3091C80F1216130699 -:108AF00024F32091C40F3091C50F1216130624F4ED -:108B00009C012F593F4F01C09C018417950744F4E5 -:108B10004C1B5D0B445051094217530774F209C0B6 -:108B2000CE010396841795074CF44C1B5D0B445003 -:108B300051095093CC0F4093CB0F12C009EE11E0B6 -:108B40000C1B1D0B021713070CF4B7CF60E070E08D -:108B50008DEC9FE00F9411C91093CC0F0093CB0FB5 -:108B600081E0DF91CF911F910F910895803691059B -:108B70000CF4C7CE80E00895FF920F931F93CF931C -:108B8000DF93EC01F62E662321F00F94A3C88C012D -:108B900009C0FC0101900020E9F78F010150110983 -:108BA000081B190B60E0C801E1DF882309F466C0E7 -:108BB0008091C90F9091CA0FFC01E353F04F23E05D -:108BC00020830396BE018353904FFF2019F00F942A -:108BD0009CC802C00F944AC9E4E1FFE08491EF0110 -:108BE000882329F07ADE2196FE018491F9CFE5E809 -:108BF000F8E4C591D491FE018491882319F06DDECB -:108C00002196F9CFC091C90FD091CA0FC053D04F50 -:108C10008991882311F061DEFBCFEDE9F2E18491C7 -:108C2000EF01882329F059DE2196FE018491F9CFC6 -:108C30008AE053DE0C5F1F4F8091C90F9091CA0FDD -:108C4000080F191F0D3EF1E01F0729F01093CA0FFE -:108C50000093C90F04C01092CA0F1092C90F8091DF -:108C6000C70F9091C80F01969093C80F8093C70FBC -:108C7000DF91CF911F910F91FF900895EAE1FFE0FE -:108C800084918F01882331F028DE0F5F1F4FF80198 -:108C90008491F8CFE5E8F8E405911491F801849106 -:108CA000882321F01ADE0F5F1F4FF8CFFF2061F0FD -:108CB000FE018491882319F010DE2196F9CFE6E8B1 -:108CC000F2E18491EF0105C089918823C1F305DEAB -:108CD000FBCF882329F001DE2196FE018491F9CF94 -:108CE0008AE0DF91CF911F910F91FF90F6CD81E047 -:108CF0002091C70F3091C80F232B09F080E0089511 -:108D0000FF920F931F93CF93DF93EC01F62E662310 -:108D100019F00F94A3C808C0FC0101900020E9F7E6 -:108D2000CF0101978C1B9D0BC0DE882309F450C036 -:108D30008091CB0F9091CC0FFC01E353F04F23E0D7 -:108D400020830396BE018353904FFF2019F00F94A8 -:108D50009CC802C00F944AC98091C70F9091C80F58 -:108D600001969093C80F8093C70FE4E1FFE08491D0 -:108D7000EF01882329F0B1DD2196FE018491F9CF1E -:108D8000EDE6F2E18491EF01882329F0A6DD21963A -:108D9000FE018491F9CFC091CB0FD091CC0FC0537D -:108DA000D04F8991882311F098DDFBCFEBE6F2E1FB -:108DB0008491EF01882329F090DD2196FE018491B2 -:108DC000F9CF8AE0DF91CF911F910F91FF9085CD70 -:108DD000EAE1FFE084918F01882331F07EDD0F5FAF -:108DE0001F4FF8018491F8CFE2E5F2E184918F0101 -:108DF000882331F072DD0F5F1F4FF8018491F8CFA7 -:108E0000FF2061F0FE018491882319F066DD219630 -:108E1000F9CFEBE3F2E18491EF0105C0899188235A -:108E2000C1F35BDDFBCF882309F4CBCF56DD219660 -:108E3000FE018491F8CF81E08093C60F089581E010 -:108E40002091C70F3091C80F232B09F080E00895BF -:108E50002F923F924F925F926F927F928F929F924A -:108E6000AF92BF92CF92DF92EF92FF920F931F9338 -:108E7000CF93DF93CDB7DEB76F970FB6F894DEBF11 -:108E80000FBECDBF61E08FE590E03BDD882309F4A4 -:108E900086C4912C0CE212E1882483943BE8E32EF3 -:108EA00038E4F32E41E2C42E46E4D42E54E2752E6B -:108EB0008091150990911609209117093091180990 -:108EC000821B930B8F779927009709F4CBC18F37BB -:108ED000910599F4F80184912CE2A22E22E1B22EA0 -:108EE000882339F0FADCFFEFAF1ABF0AF50184914D -:108EF000F7CF8AE0F2DC9924939484E998E00E9409 -:108F00003B448F8F0F9498B76093BD0F7093BE0F43 -:108F10008093BF0F9093C00F0F9498B76093B90FD1 -:108F20007093BA0F8093BB0F9093BC0F2F8D27FDCA -:108F3000BFCF8091C40F9091C50F2A3031F02D30F2 -:108F400021F08F3591050CF474C1009719F410923B -:108F5000C30F25C4A090C90FB090CA0FFC01E35302 -:108F6000F04FEA0DFB1D13828091C30F811147C1A1 -:108F70006DE274E0C5018053904F0F946EC9892B48 -:108F800009F07FC0F501E353F04F83818E3409F07F -:108F900078C04AE050E060E070E0C5018F52904F29 -:108FA0000F9447C76093B50F7093B60F8093B70FB8 -:108FB0009093B80F2091B10F3091B20F4091B30F41 -:108FC0005091B40F2F5F3F4F4F4F5F4FA090C90F8D -:108FD000B090CA0F621773078407950709F400C29F -:108FE00067E272E1C5018053904F0F94E1C8892B6D -:108FF00009F0F6C1EAE1FFE084918F01882331F0A6 -:109000006CDC0F5F1F4FF8018491F8CFE3E9F8E4BF -:1090100005911491F8018491882321F05EDC0F5FA3 -:109020001F4FF8CF4091B10F5091B20F6091B30F25 -:109030007091B40F2AE030E084E998E00E94164570 -:109040008AE04BDC0E94E1575FC0E091C10FF091D4 -:10905000C20F1082E091C90FF091CA0FE353F04F95 -:1090600073828091B50F9091B60FA091B70FB09118 -:10907000B80F8093B10F9093B20FA093B30FB0933A -:10908000B40F8091C90F9091CA0FFC01E353F04FC8 -:109090002381AC014D5F5F4F5A012E3409F439C072 -:1090A000243209F436C06AE270E0CA018353904F5B -:1090B0000F9436C9892B69F1EAE1FFE084918F01B1 -:1090C000882331F00ADC0F5F1F4FF8018491F8CF3D -:1090D000EDE8F8E405911491F8018491882321F0DA -:1090E000FCDB0F5F1F4FF8CF4091B10F5091B20FD3 -:1090F0006091B30F7091B40F2AE030E084E998E0FA -:109100000E9416458AE0E9DB1092C50F1092C40F49 -:1091100046C367E470E0C5018353904F0F9436C98E -:109120009093C20F8093C10F009769F12091820A3A -:10913000211108C02AE030E030936E0A20936D0AB6 -:109140008092750A209196092223E9F04AE050E0C6 -:1091500060E070E001960F9447C76430710598F4A1 -:10916000F701A590B490F5018491882329F0B5DB2F -:10917000FFEFAF1ABF0AF7CF8AE0AFDBF6018591A8 -:1091800094910F94B2498091C90F9091CA0F68ECE5 -:1091900075E08053904F0F9441C9892B29F462E008 -:1091A00083EB95E00E94A45E8091C90F9091CA0F55 -:1091B000FC01E353F04F8082DC01A053B04FFD016E -:1091C00001900020E9F73197EA1BFB0B04968E0F04 -:1091D0009F1F8D3EF1E09F0729F09093CA0F809367 -:1091E000C90F04C01092CA0F1092C90F8091C70F07 -:1091F0009091C80F01969093C80F8093C70F10925B -:10920000C50F1092C40F80911509909116092091F5 -:10921000170930911809821B930B8F779927892B97 -:1092200009F4BDC261E08FE590E06BDB811140CEB7 -:10923000B6C22B3311F48092C30F3091C30F31119A -:1092400037CEE091C90FF091CA0FAC014F5F5F4F6D -:109250005093C50F4093C40FE80FF91FE053F04F30 -:10926000208326CE8091811A882309F463C00F944D -:1092700098B76093B90F7093BA0F8093BB0F909318 -:10928000BC0F0091BD0F1091BE0F2091BF0F309108 -:10929000C00FDC01CB01801B910BA20BB30B813201 -:1092A0009340A105B10508F445C0E091C40FF091C9 -:1092B000C50F1E161F060CF03DC08091C90F90917E -:1092C000CA0FE353F04FE80FF91F1382DC01A053DC -:1092D000B04FFD0101900020E9F73197EA1BFB0B2D -:1092E00004968E0F9F1F8D3E31E0930729F09093D7 -:1092F000CA0F8093C90F04C01092CA0F1092C90FF1 -:109300008091C70F9091C80F01969093C80F8093DA -:10931000C70F1092C50F1092C40FEEE1F2E18491D5 -:109320008F01882309F43BC2D8DA0F5F1F4FF80181 -:109330008491F7CF9920A9F02091C40F3091C50FE7 -:109340001216130674F48091C90F9091CA0F821BF4 -:10935000930B9093CA0F8093C90F1092C50F109270 -:10936000C40F8091820A882309F419C28091C40F26 -:109370009091C50F892B09F012C28091C70F90916F -:10938000C80F892B11F41092A80F8CE3882E912C12 -:10939000A12CB12C90E1492E9EE0592E612C712C0C -:1093A0008E010F5F1F4F222423944091900D509106 -:1093B000910D6091920D7091930D8091880D909117 -:1093C000890DA0918A0DB0918B0D481759076A0736 -:1093D0007B0708F0E4C18091A80F8111E0C156C05D -:1093E000C5018053904F5C016AE270E00F9436C96A -:1093F0009093C20F8093C10F0097C9F4EAE1FFE098 -:1094000084918F01882331F068DA0F5F1F4FF801D4 -:109410008491F8CFEFE8F8E405911491F801849174 -:10942000882309F4FFCD59DA0F5F1F4FF7CFF501FD -:10943000B12CE817F90719F02191B226FACF4AE0CA -:1094400050E060E070E0CF0101960F9447C72B2DEC -:1094500030E02617370709F4F8CDEAE1FFE0849100 -:109460008F01882331F039DA0F5F1F4FF8018491A3 -:10947000F8CFE9E9F8E405911491F8018491882383 -:1094800009F4D0CD2ADA0F5F1F4FF7CF8091E30C9C -:109490009091E40CA091E50CB091E60C8093900DB6 -:1094A0009093910DA093920DB093930D8BED9CE052 -:1094B0000E9453AA382EAAE08A17C9F0FDE03F1691 -:1094C000B1F023E2321619F03AE3331204C02091CE -:1094D000C30F222361F02091C40F3091C50F2F35A7 -:1094E00031052CF48F3F4FEF940709F03DC14091B7 -:1094F000900D5091910D6091920D7091930D80910E -:10950000880D9091890DA0918A0DB0918B0D48170F -:1095100059076A077B0708F49EC0E3E6F8E4E59084 -:10952000F490F7018491882329F0D7D9FFEFEF1A3F -:10953000FF0AF7CF8AE0D1D90F9498B760939C09BE -:1095400070939D0980939E0990939F09C090A009F4 -:10955000D090A109E090A209F090A3096C197D09AF -:109560008E099F09C090510AD090520AE090530A88 -:10957000F090540A6C197D098E099F0928EE33E09A -:1095800040E050E00F9446C569017A011092510AFB -:109590001092520A1092530A1092540A60913F0A94 -:1095A0007091400A8091410A9091420A0E94DB5FCB -:1095B000C701B601A50194010F9446C5CA01B901BE -:1095C000A50194010F9446C57F936F93C701B6011F -:1095D000A30192010F9446C53F932F93AAE0B2E1F5 -:1095E000BF93AF931F930F930F94C1CAE4E1FFE0C1 -:1095F00084910FB6F894DEBF0FBECDBF7F018823E4 -:1096000039F06BD93FEFE31AF30AF7018491F7CFF2 -:109610007801D7018D917D01882311F05ED9F9CFB2 -:109620008AE05BD9C8010F94A54980E89AE0D9D8AF -:1096300061E080E89AE00E94E9C08091811A882365 -:1096400051F086E090E00F945156E4E0F0E0F093A2 -:10965000861AE093851AF3E23F1202C02092A80F07 -:109660002091C40F3091C50F2115310519F41092C6 -:10967000C30F9BCE8091DE0C882349F0C090900DE3 -:10968000D090910DE090920DF090930D03C0C12CFD -:10969000D12C760181E090E04091A90F5091AA0F62 -:1096A000841B950B8C0D9D1D4091C90F5091CA0FC5 -:1096B000FA01E353F04F62E0608381839283F90102 -:1096C000E353F04FE40FF51F1382DA01A053B04FBC -:1096D000FD0101900020E9F73197EA1BFB0BF8949C -:1096E0008091C70F9091C80F01969093C80F8093F7 -:1096F000C70FEC5F2091C90F3091CA0F2E0F311D9B -:109700003093CA0F2093C90F8091DE0C882349F053 -:109710008091900D9091910DA091920DB091930D2B -:1097200003C080E090E0DC010196A11DB11D809393 -:10973000A90F9093AA0FA093AB0FB093AC0F2D3E3F -:10974000314021F41092CA0F1092C90F78941092F0 -:10975000C30F1092C50F1092C40F61E08FE590E027 -:10976000D0D8811120CE1BC05BE3351203C02092FC -:10977000C30F1BCE4091C30F411115CEE091C90F0D -:10978000F091CA0FA9014F5F5F4F5093C50F4093EF -:10979000C40FE20FF31FE053F04F808306CE6F96A5 -:1097A0000FB6F894DEBF0FBECDBFDF91CF911F91F2 -:1097B0000F91FF90EF90DF90CF90BF90AF909F9070 -:1097C0008F907F906F905F904F903F902F90089573 -:1097D0004091C70F5091C80F41155105A9F18091D3 -:1097E000CB0F9091CC0F20E030E0FC01E353F04F21 -:1097F000A081A23021F461817281260F371F415070 -:10980000510929F10396FC01E353F04FE0810196E1 -:10981000E111F9CF8D3EE1E09E0738F08D3EE1E0A9 -:109820009E0719F7EDECFFE008C0FC01E353F04F91 -:10983000E081E111F3CF0196EDCFCF018D5C9F4028 -:10984000A191AA23D1F3D1CF80E090E00895C9017E -:1098500008950F9498B76093BD0F7093BE0F8093D7 -:10986000BF0F9093C00F0F9498B76093B90F709388 -:10987000BA0F8093BB0F9093BC0F089520E030E0A7 -:10988000A901CA01B9010C94456E60E070E0CB01FA -:109890000C94656F10926B02089587E69FE00F9419 -:1098A000EDCC91E0813009F090E090936B02089547 -:1098B00068EC88EC0F94AC01009719F01092C71176 -:1098C00003C021E02093C71161E0892B09F460E017 -:1098D00060936B021092C6111092C51187E69FE04B -:1098E0000F94FFCC80916B028093E0020895109258 -:1098F0006B0260E087E69FE00F94FFCC1092E002DD -:10990000089526EF280F92EC980F243050F03EEC8B -:10991000380F343030F0983008F041C0ADE6B0E098 -:1099200040C0ABE6B0E0EBE6F0E03081243010F46C -:10993000865009C0823399F0833399F0843399F0CB -:10994000983098F48E5341E050E060E070E004C03D -:10995000440F551F661F771F8A95D2F707C048E04E -:1099600005C044E003C042E001C041E0432B4C93FA -:109970004BB331E0983018F030E081E001C084E072 -:10998000842B8BBB90916800243020F0332311F09E -:1099900084E001C081E0892B809368000895A0E0F5 -:1099A000B0E0983018F4EDE6F0E0BFCFE0E0F0E092 -:1099B000BCCF61E08FE30F9483B960E08FE30F9435 -:1099C000BCB91092C8118FE39CCF0F946F018091A6 -:1099D000D0129091D1129093C1118093C011109226 -:1099E000BF111092BA110F9498B76093BB11709386 -:1099F000BC118093BD119093BE1181E08093C21180 -:109A00001092C51108951092BA111092C2111092BD -:109A1000C51108950F931F930F9498B70091BB1130 -:109A20001091BC112091BD113091BE11601B710BC2 -:109A3000820B930B693171058105910508F43FC0D4 -:109A40000F9498B76093BB117093BC118093BD11B4 -:109A50009093BE110F946F012091D0123091D112CA -:109A60008091C0119091C111821B930B4091BF1145 -:109A7000009799F097FF07C09091BA11981B9093A7 -:109A8000BA114D5F03C0423018F042504093BF11ED -:109A90003093C1112093C01105C0442319F04150E7 -:109AA0004093BF118091BF11811103C01092BA1170 -:109AB00006C08F3020F08091BA118F3110F480E011 -:109AC00001C081E01F910F9108951F920F920FB670 -:109AD0000F9211240BB60F922F933F934F935F93E6 -:109AE0006F937F938F939F93AF93BF93CF93DF93A6 -:109AF000EF93FF93809106019091C811892781FF10 -:109B000033C0C091C311D091C4111092C4111092EE -:109B1000C31178940F946F01892B21F4E8DE81E062 -:109B20008093C7112097E1F08091D0129091D112CB -:109B3000009741F01CF0D7FF0CC012C01C161D0688 -:109B400024F007C01C161D065CF48091C5118F5FC0 -:109B500005C08091C511882319F081508093C511EB -:109B60001092D1121092D012FF91EF91DF91CF910C -:109B7000BF91AF919F918F917F916F915F914F9125 -:109B80003F912F910F900BBE0F900FBE0F901F9023 -:109B9000189520916B02222319F12091C311309165 -:109BA000C411121613062CF4FC01808D83FD07C02E -:109BB0000895232BA9F0FC01808D83FD11C08091B5 -:109BC00006019FB781FF05C0F894809108018D7F41 -:109BD00004C0F894809108018260809308019FBFBF -:109BE000089520916B02222379F12091C3113091C5 -:109BF000C411FC01808D83FF03C0719561957109CB -:109C0000620F731F7093C4116093C31180916C0233 -:109C100090916D026817790734F4919581959109B7 -:109C2000861797078CF0809106019FB781FF05C0CA -:109C3000F894809108018D7F04C0F8948091080108 -:109C40008260809308019FBF089580916B028823F2 -:109C500071F08091C511863050F010DE61E08FE91F -:109C600092E14ED881E08093C61110926B02089564 -:109C70000F931F93CF93DF93EC018B0144E150E0EE -:109C8000BC0189EC91E10F94D2C8CE010F94A3C816 -:109C9000992744E150E0481B590BB80187539E4E69 -:109CA0000F94D2C889EC91E1DF91CF911F910F9170 -:109CB0000895AF92BF92CF92DF92EF92FF920F93EF -:109CC0001F93CF93DF93EC015B017A01690144E1BB -:109CD00050E0BC0189EC91E10F94D2C8CE010F9401 -:109CE000A3C8EC01DD2704E110E0A8014C1B5D0BCB -:109CF000B501CE0187539E4E0F94D2C8C5010F9473 -:109D0000A3C8C80FD91FDD27A8014C1B5D0BB701E5 -:109D1000CE0187539E4E0F94D2C8C7010F94A3C89B -:109D20008C0F9D1F9927A801481B590BB60187531B -:109D30009E4E0F94D2C889EC91E1DF91CF911F9193 -:109D40000F91FF90EF90DF90CF90BF90AF9008956C -:109D50004F925F926F927F928F929F92AF92BF923B -:109D6000CF92DF92EF92FF920F931F93CF93DF93E7 -:109D7000CDB7DEB728970FB6F894DEBF0FBECDBFC4 -:109D8000DC01CD90DD90ED90FC901397C092F8111E -:109D9000D092F911E092FA11F092FB1114960D9104 -:109DA0001D912D913C91179709831A832B833C8336 -:109DB00000930012109301122093021230930312A9 -:109DC000DB010D911D912D913C9113970D831E8305 -:109DD0002F8338870093FC111093FD112093FE11FF -:109DE0003093FF1114964D905D906D907C90179775 -:109DF000409204125092051260920612709207125D -:109E0000FA0160817181828193816093E011709386 -:109E1000E1118093E2119093E31184809580A680F4 -:109E2000B7808092E4119092E511A092E611B09271 -:109E3000E71120E030E0A9010F946FC081110CC040 -:109E400020E030E0A901C501B4010F946FC0811179 -:109E500003C01092081203C081E08093081220E032 -:109E600030E040E85FE3C701B6010F946FC0811195 -:109E700021C020E030E0A9016D817E818F8198852D -:109E80000F946FC0811116C020E030E0A9016981F4 -:109E90007A818B819C810F946FC081110BC020E06F -:109EA00030E040E85FE3C301B2010F946FC0882344 -:109EB00009F45EC080910812826080930812A301A9 -:109EC0009201C701B6010F9444C34B015C012D817F -:109ED0003E814F81588569817A818B819C810F9465 -:109EE00044C39B01AC01C501B4010F9495BF4B0164 -:109EF0005C019B01AC01C301B2010F9476C0609379 -:109F0000E8117093E9118093EA119093EB116D8140 -:109F10007E818F8198859058A50194010F9476C019 -:109F20006093EC117093ED118093EE119093EF110B -:109F300069817A818B819C819058A50194010F944D -:109F400076C06093F0117093F1118093F2119093A9 -:109F5000F311A5019401C701B6010F9476C0609377 -:109F6000F4117093F5118093F6119093F71124C0BA -:109F700080E090E0A0E8BFE38093E8119093E911BE -:109F8000A093EA11B093EB111092EC111092ED1125 -:109F90001092EE111092EF111092F0111092F11137 -:109FA0001092F2111092F3118093F4119093F51125 -:109FB000A093F611B093F71128960FB6F894DEBF70 -:109FC0000FBECDBFDF91CF911F910F91FF90EF900A -:109FD000DF90CF90BF90AF909F908F907F906F90C9 -:109FE0005F904F9008958F929F92AF92BF92CF92C1 -:109FF000DF92EF92FF920F931F9345015601E2EE1D -:10A00000F9E0FF93EF93E2E0CE2EEAE0DE2E0F942C -:10A010001A070F900F901F910F91FF90EF90DF9014 -:10A02000CF90BF90AF909F908F900D94901D8F9286 -:10A030009F92AF92BF92CF92DF92EF92FF920F93D7 -:10A040001F9347015801E090FE09F090FF0900912D -:10A05000000A1091010AE2EEF9E0FF93EF93F2E0BB -:10A06000CF2EFAE0DF2E0F941A070F900F901F915A -:10A070000F91FF90EF90DF90CF90BF90AF909F90A7 -:10A080008F900D94901D8F929F92AF92BF92CF921E -:10A09000DF92EF92FF920F931F934B015C01E090D0 -:10A0A000FE09F090FF090091000A1091010A209129 -:10A0B000FA093091FB094091FC095091FD0960912A -:10A0C000F6097091F7098091F8099091F909E2EE8B -:10A0D000F9E0FF93EF93A2E0CA2EAAE0DA2E0F94E4 -:10A0E0001A070F900F901F910F91FF90EF90DF9044 -:10A0F000CF90BF90AF909F908F900D94901DCF9276 -:10A10000DF92EF92FF920F931F93CF93DF9380E044 -:10A110000F94FF1DC6EFD9E0688379838A839B8300 -:10A1200081E00F94FF1DBAEFCB2EB9E0DB2EF601D4 -:10A13000608371838283938382E00F94FF1D7B0190 -:10A140008C016093FE097093FF098093000A90933D -:10A15000010AF60120813181428153816881798130 -:10A160008A819B81C2E0CC2ECAE0DC2E0F945B1268 -:10A17000DF91CF911F910F91FF90EF90DF90CF90E3 -:10A18000089582E00F94FF1D6093FE097093FF090C -:10A190008093000A9093010A8EEF99E00D94AD131D -:10A1A0008F929F92AF92BF92CF92DF92EF92FF92E7 -:10A1B0000F931F936B017C0120E030E040E252E4FA -:10A1C00060916202709163028091640290916502D5 -:10A1D0000F9476C04B015C01A70196016091FE09C6 -:10A1E0007091FF098091000A9091010A0F9495BF28 -:10A1F0007B018C012091FA093091FB094091FC0907 -:10A200005091FD096091F6097091F7098091F80964 -:10A210009091F909E2EEF9E0FF93EF93E2E0CE2EA0 -:10A22000EAE0DE2E0F941A070F94901D0F900F9006 -:10A230008EEF99E01F910F91FF90EF90DF90CF90FC -:10A24000BF90AF909F908F900D94AD13CF92DF92FF -:10A25000EF92FF92823008F041C0FB01C080D180B4 -:10A26000E280F38020E030E040E85FEBC701B60118 -:10A270000F9472C287FF32C020E030E040E950EC1A -:10A28000C701B6010F946FC087FD23C020E030E006 -:10A2900040E950E4C701B6010F9496BF20E030E0DA -:10A2A00040E650E40F9476C06B017C019B01AC0149 -:10A2B00060E070E080E89FE30F9495BF23E333E311 -:10A2C00043EB5EE30F9444C3A70196010F9496BF3E -:10A2D00009C063E373E383EB9EE304C060E070E0D6 -:10A2E00080E89FE3FF90EF90DF90CF9008958F92EA -:10A2F0009F92AF92BF92CF92DF92EF92FF92FC01BA -:10A30000C080D180E280F38020E030E040E85FEB65 -:10A31000C701B6010F9472C287FF38C020E030E059 -:10A3200040E950ECC701B6010F946FC087FD33C000 -:10A3300020E030E040E950E4C701B6010F9496BF39 -:10A3400020E030E040E650E40F9476C06B017C01E1 -:10A350009B01AC0160E070E080E89FE30F9495BF43 -:10A3600020E030E0A9010F9444C34B015C012AE9CD -:10A3700039E949E95EE3C701B6010F9444C39B0183 -:10A38000AC01C501B4010F9496BF08C06AE979E930 -:10A3900089E99EE303C060E070E0CB01FF90EF909D -:10A3A000DF90CF90BF90AF909F908F900895909145 -:10A3B0001909911107C09091C00095FFFCCF8093BF -:10A3C000C6000895913031F49091C80095FFFCCFFC -:10A3D0008093CE0008952F923F924F925F926F929A -:10A3E0007F928F929F92AF92BF92CF92DF92EF9225 -:10A3F000FF920F931F93CF93DF93CDB7DEB7C05C6F -:10A40000D1090FB6F894DEBF0FBECDBFE5969FAF62 -:10A410008EAFE597C056DF4F6883C05AD040C7570C -:10A42000DF4F59834883C958D040AD963FAF2EAF18 -:10A43000AD97AF961FAF0EAFAF976B96FFAEEEAE78 -:10A440006B97D7011D921D921D921C921397F701D5 -:10A450001482158216821782F4E6C156DF4FF88304 -:10A46000CF59D040A7961CAE1DAE1EAE1FAEA7970B -:10A470006F961CAE1DAE1EAE1FAE6F97CE0101963D -:10A4800063969FAF8EAF6397DE01AF5BBF4F65965C -:10A49000BFAFAEAF65976F966CAD7DAD8EAD9FAD26 -:10A4A0006F970F9473C0E3966CAF7DAF8EAF9FAF85 -:10A4B000E3976F966CAD7DAD8EAD9FAD6F970F94AA -:10A4C000F3C3C557DF4F688379838A839B83CB5857 -:10A4D000D040A7966CAD7DAD8EAD9FADA7970F9484 -:10A4E00073C0C157DF4F688379838A839B83CF58BA -:10A4F000D040A7966CAD7DAD8EAD9FADA7970F9464 -:10A50000F3C3CD56DF4F688379838A839B83C35916 -:10A51000D04080E46396EEADFFAD639711928A95CB -:10A52000E9F780E16596AEADBFAD65971D928A955E -:10A53000E9F780E090E00E94AD60FE01EF5BFF4F25 -:10A54000C556DF4FF983E883CB59D040CE01019641 -:10A55000E7969FAF8EAFE79700E0CD56DF4F88813B -:10A560009981AA81BB81C359D040B058C358DF4FED -:10A5700088839983AA83BB83CD57D040C157DF4FCF -:10A5800088819981AA81BB81CF58D040B058CF57DC -:10A59000DF4F88839983AA83BB83C158D040C557B6 -:10A5A000DF4F88819981AA81BB81CB58D040B058B8 -:10A5B000CB57DF4F88839983AA83BB83C558D0408C -:10A5C000A1961FAE1EAEA19710E0E5962EAC3FAC53 -:10A5D000E59766961FAE6697C12CD12C76016696DC -:10A5E0009FAD6697C056DF4FA881C05AD0409A17DA -:10A5F00009F41AC1013011F40C94DADB113011F4B2 -:10A600000C9411DC002311F1023071F4D1012D9171 -:10A610003D914D915C91CB57DF4F688179818A8163 -:10A620009B81C558D0400DC0F10124813581468100 -:10A630005781CF57DF4F688179818A819B81C158CB -:10A64000D0400F9444C34B015C0106C0812C912C77 -:10A65000B0E8AB2EBFE3BB2E112311F1123071F421 -:10A66000D1012D913D914D915C91CB57DF4F688188 -:10A6700079818A819B81C558D0400DC0F101248128 -:10A68000358146815781CF57DF4F688179818A8133 -:10A690009B81C158D0400F9444C39B01AC0104C0BE -:10A6A00020E030E040E85FE3B1016C5F7F4F6696E9 -:10A6B0008FAD6697C354DF4F2883CD5BD040C25423 -:10A6C000DF4F3883CE5BD040C154DF4F4883CF5B30 -:10A6D000D040C054DF4F5883C05CD040B7DD2B0161 -:10A6E0003C01C354DF4F2881CD5BD040C254DF4FC3 -:10A6F0003881CE5BD040C154DF4F4881CF5BD04022 -:10A70000C054DF4F5881C05CD040C501B4010F94E4 -:10A7100044C3A30192010F9444C39B01AC01C70140 -:10A72000B6010F9496BF6B017C01002309F471C040 -:10A73000112309F46EC0023011F00C9402DCD10137 -:10A740002D913D914D915C91E3966CAD7DAD8EADBB -:10A750009FADE3970F9444C34B015C01113011F49A -:10A760000C94F4DB123011F00C94E5DBD1012D9147 -:10A770003D914D915C91E3966CAD7DAD8EAD9FADFD -:10A78000E3970F9444C39B01AC016696FFAD6697B7 -:10A79000F23010F00C94FADBC1010496C354DF4F81 -:10A7A0002883CD5BD040C254DF4F3883CE5BD0408E -:10A7B000C154DF4F4883CF5BD040C054DF4F588334 -:10A7C000C05CD04094DD2B013C01C354DF4F288195 -:10A7D000CD5BD040C254DF4F3881CE5BD040C154F6 -:10A7E000DF4F4881CF5BD040C054DF4F5881C05C01 -:10A7F000D040C501B4010F9444C3A30192010F944A -:10A8000044C39B01AC01C701B6010F9496BF6B0115 -:10A810007C0166962FAD66972F5F66962FAF669781 -:10A8200088E0280E311CDBCEE796EEADFFADE79752 -:10A83000A1968EAD9FADA197E80FF91FC082D1827E -:10A84000E282F3821F5F0496A1969FAF8EAFA1971D -:10A85000409709F0BACEE5962EAC3FACE597C757C6 -:10A86000DF4FA881B981C958D0406796BFAFAEAF5E -:10A87000679710E0AB961CAE1DAE1EAE1FAEAB9739 -:10A88000C056DF4F2881C05AD040121709F498C132 -:10A89000002331F1013059F1023071F4F1012081CE -:10A8A000318142815381CB57DF4F688179818A8121 -:10A8B0009B81C558D0400FC0D10114962D913D9178 -:10A8C0004D915C911797CF57DF4F688179818A81CD -:10A8D0009B81C158D0400F9444C34B015C010AC016 -:10A8E000812C912CE0E8AE2EEFE3BE2E03C0812C2C -:10A8F000912C5401F10181919191A191B191A19675 -:10A90000FFAFEEAFA197C956DF4F88839983AA8323 -:10A91000BB83C759D0409C01AD01E3966CAD7DADC2 -:10A920008EAD9FADE3970F9444C36B017C01D101C1 -:10A9300014968D919D910D90BC91A02DED968CAFAC -:10A940009DAFAEAFBFAFED976796EEADFFAD67972A -:10A950004590559065907490ED962CAD3DAD4EAD03 -:10A960005FADED97CD56DF4F688179818A819B81FC -:10A97000C359D0400F9444C39B01AC01C701B60139 -:10A980000F9495BF6B96EEADFFAD6B972081318133 -:10A99000428153810F9496BFA30192010F9495BFFA -:10A9A0009B01AC01A1966EAD7FADA197812FC354E1 -:10A9B000DF4F2883CD5BD040C254DF4F3883CE5B5E -:10A9C000D040C154DF4F4883CF5BD040C054DF4FED -:10A9D0005883C05CD0403ADC2B013C01C354DF4FAC -:10A9E0002881CD5BD040C254DF4F3881CE5BD04050 -:10A9F000C154DF4F4881CF5BD040C054DF4F5881F6 -:10AA0000C05CD040C501B4010F9444C3A3019201BE -:10AA10000F9444C39B01AC01AB966CAD7DAD8EAD84 -:10AA20009FADAB970F9496BFAB966CAF7DAF8EAFDB -:10AA30009FAFAB970023B9F00130C9F00230E9F0C5 -:10AA4000ED962CAD3DAD4EAD5FADED97C358DF4FEC -:10AA5000688179818A819B81CD57D0400F9444C30E -:10AA60006B017C010AC0C12CD12C760106C0C12C1F -:10AA7000D12C70E8E72E7FE3F72E6796EEADFFADA1 -:10AA80006797349685909590A590B490C956DF4FFE -:10AA9000288139814A815B81C759D040C557DF4F32 -:10AAA000688179818A819B81CB58D0400F9444C3BF -:10AAB0002B013C01ED962CAD3DAD4EAD5FADED975C -:10AAC000C157DF4F688179818A819B81CF58D040FF -:10AAD0000F9444C39B01AC01C301B2010F9496BF14 -:10AAE0006B96AEADBFAD6B9714962D913D914D9188 -:10AAF0005C9117970F9496BFA50194010F9495BF91 -:10AB00009B01AC01123080F5A1968EAD9FADA1974F -:10AB1000C354DF4F2883CD5BD040C254DF4F38830E -:10AB2000CE5BD040C154DF4F4883CF5BD040C05490 -:10AB3000DF4F5883C05CD040DADB4B015C01C3546B -:10AB4000DF4F2881CD5BD040C254DF4F3881CE5BD0 -:10AB5000D040C154DF4F4881CF5BD040C054DF4F5D -:10AB60005881C05CD04006C0812C912C60E8A62E94 -:10AB70006FE3B62EC701B6010F9444C3A50194013B -:10AB80000F9444C39B01AC01AB966CAD7DAD8EAD13 -:10AB90009FADAB970F9496BFAB966CAF7DAF8EAF6A -:10ABA0009FAFAB971F5F6796EEADFFAD6797389687 -:10ABB0006796FFAFEEAF6797F8E02F0E311C60CEBF -:10ABC000AB968CAD9DADAEADBFADAB97B058C55695 -:10ABD000DF4FE881F981CB59D04081939193A193C4 -:10ABE000B193C556DF4FF983E883CB59D0400F5F4F -:10ABF000E7968EAD9FADE7974096E7969FAF8EAFF5 -:10AC0000E797043009F0DCCC25968CAD9DADAEAD58 -:10AC1000BFAD2597A3968CAF9DAFAEAFBFAFA39747 -:10AC20008D819E81AF81B885AB968CAF9DAFAEAF65 -:10AC3000BFAFAB9789859A85AB85BC85E3968CAF12 -:10AC40009DAFAEAFBFAFE3978D859E85AF85B889C9 -:10AC5000E9968CAF9DAFAEAFBFAFE99789819A817E -:10AC6000AB81BC81ED968CAF9DAFAEAFBFAFED9722 -:10AC700029968CAD9DADAEADBFAD2997C358DF4FC2 -:10AC800088839983AA83BB83CD57D04089899A89C9 -:10AC9000AB89BC89CF57DF4F88839983AA83BB8355 -:10ACA000C158D040898D9A8DAB8DBC8DCB57DF4F6D -:10ACB00088839983AA83BB83C558D0408D8D9E8D90 -:10ACC000AF8DB8A1C557DF4F88839983AA83BB8313 -:10ACD000CB58D0408D899E89AF89B88DC157DF4F41 -:10ACE00088839983AA83BB83CF58D0402D968CAD9F -:10ACF0009DADAEADBFAD2D97CD56DF4F8883998307 -:10AD0000AA83BB83C359D04089A19AA1ABA1BCA19E -:10AD1000C956DF4F88839983AA83BB83C759D04024 -:10AD20008DA19EA1AFA1B8A5C556DF4F8883998399 -:10AD3000AA83BB83CB59D0408DA59EA5AFA5B8A94A -:10AD4000CF55DF4F88839983AA83BB83C15AD040F4 -:10AD500089A59AA5ABA5BCA5CB55DF4F8883998360 -:10AD6000AA83BB83C55AD04061968CAD9DADAEAD74 -:10AD7000BFAD6197C755DF4F88839983AA83BB8393 -:10AD8000C95AD04089A99AA9ABA9BCA9C355DF4F1C -:10AD900088839983AA83BB83CD5AD0408DA99EA96D -:10ADA000AFA9B8ADCF54DF4F88839983AA83BB8303 -:10ADB000C15BD04089AD9AADABADBCADCB54DF4FDC -:10ADC00088839983AA83BB83C55BD04021968CADD1 -:10ADD0009DADAEADBFAD2197C754DF4F888399833A -:10ADE000AA83BB83C95BD04014E6412C512C3201AD -:10ADF0005301420173016201A3019201AB966CAD54 -:10AE00007DAD8EAD9FADAB970F9444C39B01AC015C -:10AE1000A3966CAD7DAD8EAD9FADA3970F9495BFFE -:10AE20002B013C01A5019401E3966CAD7DAD8EAD87 -:10AE30009FADE3970F9444C39B01AC01C301B201E2 -:10AE40000F9495BF2B013C01A7019601E9966CADCB -:10AE50007DAD8EAD9FADE9970F9444C39B01AC01CE -:10AE6000C301B2010F9495BFED962CAD3DAD4EAD33 -:10AE70005FADED970F9476C069966CAF7DAF8EAFE6 -:10AE80009FAF69979B01AC01CF57DF4F68817981F4 -:10AE90008A819B81C158D0400F9444C39B01AC016F -:10AEA000C358DF4F688179818A819B81CD57D0401B -:10AEB0000F9495BF2B013C01A5019401CB57DF4FA7 -:10AEC000688179818A819B81C558D0400F9444C3A1 -:10AED0009B01AC01C301B2010F9495BF4B015C0112 -:10AEE000A7019601C557DF4F688179818A819B81CF -:10AEF000CB58D0400F9444C39B01AC01C501B401B1 -:10AF00000F9495BFC157DF4F288139814A815B81FA -:10AF1000CF58D0400F9476C02B013C0169962CADE0 -:10AF20003DAD4EAD5FAD6997C956DF4F6881798100 -:10AF30008A819B81C759D0400F9444C39B01AC01C7 -:10AF4000CD56DF4F688179818A819B81C359D0407A -:10AF50000F9495BF4B015C01A3019201C556DF4FD1 -:10AF6000688179818A819B81CB59D0400F9444C3F9 -:10AF70009B01AC01C501B4010F9495BF4B015C016D -:10AF8000A7019601CF55DF4F688179818A819B8126 -:10AF9000C15AD0400F9444C39B01AC01C501B40118 -:10AFA0000F9495BFCB55DF4F288139814A815B8152 -:10AFB000C55AD0400F9476C04B015C0169962CAD08 -:10AFC0003DAD4EAD5FAD6997C355DF4F6881798167 -:10AFD0008A819B81CD5AD0400F9444C39B01AC0120 -:10AFE000C755DF4F688179818A819B81C95AD040DA -:10AFF0000F9495BF6B017C01A3019201CF54DF4FE9 -:10B00000688179818A819B81C15BD0400F9444C360 -:10B010009B01AC01C701B6010F9495BF6B017C0188 -:10B02000A5019401CB54DF4F688179818A819B818E -:10B03000C55BD0400F9444C39B01AC01C701B6016E -:10B040000F9495BFC754DF4F288139814A815B81B6 -:10B05000C95BD0400F9476C06B017C01115009F0A0 -:10B06000CBCE69962CAD3DAD4EAD5FAD69976B967D -:10B07000AEADBFAD6B976D917D918D919C910F940D -:10B0800096BF6B96EEADFFAD6B9760837183828345 -:10B090009383A301920164817581868197810F94C6 -:10B0A00096BF6B96AEADBFAD6B9714966D937D93C7 -:10B0B0008D939C931797A50194016F966CAD7DAD10 -:10B0C0008EAD9FAD6F970F9496BF6F966CAF7DAFAF -:10B0D0008EAF9FAF6F97A7019601A7966CAD7DAD20 -:10B0E0008EAD9FADA7970F9496BFA7966CAF7DAF1F -:10B0F0008EAF9FAFA797C156DF4FB881CF59D040D1 -:10B10000B150C156DF4FB883CF59D040B111C3C938 -:10B110006F966CAD7DAD8EAD9FAD6F970F9473C084 -:10B12000AD96EEADFFADAD9760837183828393835F -:10B130006F966CAD7DAD8EAD9FAD6F970F94F3C3E1 -:10B14000AD96AEADBFADAD9714966D937D938D93D7 -:10B150009C931797A7966CAD7DAD8EAD9FADA797CD -:10B160000F94F3C3DC01CB01B058AF96EEADFFAD49 -:10B17000AF9780839183A283B383A7966CAD7DAD97 -:10B180008EAD9FADA7970F9473C0AF96AEADBFAD18 -:10B19000AF9714966D937D938D939C9317976F96AD -:10B1A0002CAD3DAD4EAD5FAD6F97A7966CAD7DAD4F -:10B1B0008EAD9FADA7970F9495BF6B017C01E8946E -:10B1C000F7F8B701A60180E69FE00F9411CD2FE1BB -:10B1D00032E449E05BE3C701B6010F9472C218166E -:10B1E0006CF425E33AEF4EE85BE3C701B6010F9438 -:10B1F00072C2181634F402E010E005C000E010E05E -:10B2000002C001E010E025E33AEF4EE85BE36F9601 -:10B210006CAD7DAD8EAD9FAD6F979F770F9472C271 -:10B2200018167CF025E33AEF4EE85BE3A7966CAD89 -:10B230007DAD8EAD9FADA7979F770F9472C2181604 -:10B2400014F402E010E0C757DF4F28803980C95856 -:10B25000D040E596EEADFFADE597A196FFAFEEAF1E -:10B26000A19766961FAE66976696AFAD6697C05675 -:10B27000DF4FB881C05AD040AB1709F4EEC0A19699 -:10B280008EAD9FADA197DC018D909D90AD90BD904E -:10B29000A996BFAFAEAFA997DC0114968D919D9191 -:10B2A0000D90BC91A02DE3968CAF9DAFAEAFBFAF1C -:10B2B000E397F101C590D590E590F490AD96EEAD91 -:10B2C000FFADAD972081318142815381C501B40129 -:10B2D0000F9444C32B013C01AF96AEADBFADAF9709 -:10B2E0002D913D914D915C91E3966CAD7DAD8EAD10 -:10B2F0009FADE3970F9444C39B01AC01C301B2011E -:10B300000F9496BF6B96EEADFFAD6B9720813181A8 -:10B31000428153810F9496BF9B01AC01C701B601D6 -:10B320000F9495BF9B01AC010F9444C36B017C014A -:10B33000F10134964590559065907490AD96AEAD00 -:10B34000BFADAD9714962D913D914D915C9117979E -:10B35000C501B4010F9444C34B015C01AF96EEAD3F -:10B36000FFADAF972481358146815781E3966CAD5F -:10B370007DAD8EAD9FADE3970F9444C39B01AC01AF -:10B38000C501B4010F9496BF6B96AEADBFAD6B9780 -:10B3900014962D913D914D915C9117970F9496BF06 -:10B3A0009B01AC01C301B2010F9495BF9B01AC019D -:10B3B0000F9444C34B015C019B01AC01C701B60172 -:10B3C0000F9496BF0F94FDC36696BFAD6697B230DB -:10B3D00030F5A9968EAD9FADA9970E9477D12B012C -:10B3E0003C01C701B6010F94FDC32DEC3CEC4CE4CD -:10B3F0005FE30F9472C21816D4F020E030E0A90188 -:10B40000C301B2010F946FC0882399F0C501B40144 -:10B410000F94FDC320E030E040EC5FE304C02DEC6E -:10B420003CEC4CE45FE30F9472C2181614F40EEF78 -:10B430001FEF6696EFAD6697EF5F6696EFAF669784 -:10B44000A1968EAD9FADA1970896A1969FAF8EAFA6 -:10B45000A19798E0290E311C07CF0115110509F0BD -:10B46000E5C1A7962CAD3DAD4EAD5FADA7976F96EC -:10B470006CAD7DAD8EAD9FAD6F970F9496BF20E004 -:10B4800030E040E05FE30F9444C34B015C010F9454 -:10B4900073C06B017C01AD96EEADFFADAD976083DF -:10B4A000718382839383C501B4010F94F3C3AD9676 -:10B4B000AEADBFADAD9714966D937D938D939C9378 -:10B4C0001797DC01CB01B058AF96EEADFFADAF974B -:10B4D00080839183A283B383C482D582E682F7827C -:10B4E0006B96EEADFFAD6B971082118212821382C4 -:10B4F00014821582168217826C961FAE6C97A396E3 -:10B500001CAE1DAE1EAE1FAEA397A7961CAE1DAE01 -:10B510001EAE1FAEA7976696FFAD6697EF2FF0E0C1 -:10B52000A996FFAFEEAFA9976C962FAD6C97222E20 -:10B53000332427FC3094A9968EAD9FADA997281689 -:10B5400039060CF008C193E0220C331C9A95E1F700 -:10B55000E596EEADFFADE597E20DF31D808091809D -:10B56000A280B380C101049667969FAF8EAF6797A4 -:10B57000E596EEADFFADE597E80FF91FC080D180ED -:10B58000E280F380AD96AEADBFADAD972D913D910C -:10B590004D915C91C501B4010F9444C32B013C0152 -:10B5A000AF96EEADFFADAF972081318142815381DF -:10B5B000C701B6010F9444C39B01AC01C301B201A2 -:10B5C0000F9496BF2B013C01AD96AEADBFADAD97CC -:10B5D00014962D913D914D915C911797C501B40141 -:10B5E0000F9444C34B015C01AF96EEADFFADAF9736 -:10B5F0002481358146815781C701B6010F9444C328 -:10B600009B01AC01C501B4010F9496BF6B017C0195 -:10B6100069837A838B839C83BE016F5F7F4F6C96B7 -:10B620008FAD6C970E9426D14B015C01C757DF4F4D -:10B6300088819981C958D040280E391EF101659141 -:10B64000759185919491A30192010F9495BF9B01EF -:10B65000AC01C501B4010F9444C39B01AC016B96CE -:10B66000AEADBFAD6B976D917D918D919C910F9417 -:10B6700096BF6B96EEADFFAD6B976083718382834F -:10B680009383A5019401A7966CAD7DAD8EAD9FAD62 -:10B69000A7970F9496BFA7966CAF7DAF8EAF9FAF65 -:10B6A000A7976C968FAD6C97823038F4CE010196D7 -:10B6B0000E9477D14B015C0106C0812C912C80E85F -:10B6C000A82E8FE3B82EC757DF4FE881F981C958FC -:10B6D000D04067968EAD9FAD6797E80FF91F6591D3 -:10B6E000759185919491A70196010F9495BF9B0147 -:10B6F000AC01C501B4010F9444C39B01AC016B962E -:10B70000AEADBFAD6B9714966D917D918D919C916F -:10B7100017970F9496BF6B96EEADFFAD6B97648352 -:10B72000758386839783A5019401A3966CAD7DAD47 -:10B730008EAD9FADA3970F9496BFA3966CAF7DAFD0 -:10B740008EAF9FAFA3976C96FFAD6C97FF5F6C9623 -:10B75000FFAF6C97E9CEA7962CAD3DAD4EAD5FAD7A -:10B76000A7976B96AEADBFAD6B976D917D918D91A7 -:10B770009C910F9476C06B96EEADFFAD6B97608396 -:10B78000718382839383A3962CAD3DAD4EAD5FADA7 -:10B79000A39764817581868197810F9476C06B969B -:10B7A000AEADBFAD6B9714966D937D938D939C93C7 -:10B7B00017973CC0112309F42CC8812C912CA0E8C8 -:10B7C000AA2EAFE3BA2E0C94AED3F10124813581B9 -:10B7D00046815781C358DF4F688179818A819B8177 -:10B7E000CD57D0400C94C1D320E030E040E85FE377 -:10B7F0000C94C5D3412C512CF0E86F2EFFE37F2E23 -:10B800000C94F9D3F1012481358146815781C358C5 -:10B81000DF4F688179818A819B81CD57D0400C941C -:10B82000AAD301110C949BD30C9409D4AD96AEAD60 -:10B83000BFADAD978D919D910D90BC91A02D6F9650 -:10B840008CAF9DAFAEAFBFAF6F97AF96EEADFFAD14 -:10B85000AF9784809580A680B780AD96AEADBFAD22 -:10B86000AD9714968D919D910D90BC91A02DA796AA -:10B870008CAF9DAFAEAFBFAFA79780819181A28102 -:10B88000B38169968CAF9DAFAEAFBFAF6997A5018D -:10B8900094016F966CAD7DAD8EAD9FAD6F970F949B -:10B8A00044C36B017C0169962CAD3DAD4EAD5FADDF -:10B8B0006997A7966CAD7DAD8EAD9FADA7970F94A0 -:10B8C00044C39B01AC01C701B6010F9495BF6B0146 -:10B8D0007C019B01AC01C501B4010F9476C02B0122 -:10B8E0003C0169966CAD7DAD8EAD9FAD699790586A -:10B8F000A70196010F9476C04B015C01A7966CAD31 -:10B900007DAD8EAD9FADA7979058A70196010F947E -:10B9100076C069966CAF7DAF8EAF9FAF6997A70178 -:10B9200096016F966CAD7DAD8EAD9FAD6F970F9408 -:10B9300076C06B017C016B96AEADBFAD6B978D9100 -:10B940009D910D90BC91A02D6F968CAF9DAFAEAF29 -:10B95000BFAF6F976B96AEADBFAD6B9714968D91E1 -:10B960009D910D90BC91A02DA7968CAF9DAFAEAFD1 -:10B97000BFAFA797AD96EEADFFADAD9740825182B8 -:10B980006282738269968CAD9DADAEADBFAD699795 -:10B9900084839583A683B783AF96AEADBFADAF97D3 -:10B9A0008D929D92AD92BC921397FD01C482D58277 -:10B9B000E682F782C301B20190586F962CAD3DAD7F -:10B9C0004EAD5FAD6F970F9444C32B013C01A7961A -:10B9D0002CAD3DAD4EAD5FADA797C501B4010F9441 -:10B9E00044C39B01AC01C301B2010F9495BF6B9698 -:10B9F000AEADBFAD6B976D937D938D939C93139775 -:10BA000069966CAD7DAD8EAD9FAD699790586F9680 -:10BA10002CAD3DAD4EAD5FAD6F970F9444C34B0160 -:10BA20005C01A7962CAD3DAD4EAD5FADA797C701AC -:10BA3000B6010F9444C39B01AC01C501B4010F943E -:10BA400095BF6B96EEADFFAD6B9764837583868370 -:10BA50009783C801C054DF4F0FB6F894DEBF0FBE06 -:10BA6000CDBFDF91CF911F910F91FF90EF90DF90AD -:10BA7000CF90BF90AF909F908F907F906F905F908E -:10BA80004F903F902F9008954FEF5FEFBA0185EEF2 -:10BA90009FE00F9411CD4FEF5FEFBA0189EE9FE069 -:10BAA0000F9411CD4FEF5FEFBA018DED9FE00F9432 -:10BAB00011CD4FEF5FEFBA0181EE9FE00F9411CDF2 -:10BAC0004FEF5FEFBA0185ED9FE00F9411CD4FEF7F -:10BAD0005FEFBA0189ED9FE00F9411CD4FEF5FEF5B -:10BAE000BA0185EC9FE00F9411CD4FEF5FEFBA01E3 -:10BAF00089EC9FE00F9411CD4FEF5FEFBA018DEC11 -:10BB00009FE00F9411CD4FEF5FEFBA0181ED9FE001 -:10BB10000D9411CDCF93DF93C5ECDFE0CE010F94F0 -:10BB2000FACC019639F02296C53D8FE0D807B1F7DF -:10BB300081E001C080E0DF91CF910895CF93DF9342 -:10BB4000CDB7DEB768970FB6F894DEBF0FBECDBF96 -:10BB500080E090E0A0E8BFE3898B9A8BAB8BBC8B35 -:10BB60001D8A1E8A1F8A188E19861A861B861C86B5 -:10BB70008D879E87AF87B88B19821A821B821C82A1 -:10BB80001D821E821F821886AE014F5F5F4FBE016D -:10BB9000675F7F4FCE0141960E94A8CE68960FB690 -:10BBA000F894DEBF0FBECDBFDF91CF910895CF9344 -:10BBB000DF93CDB7DEB768970FB6F894DEBF0FBE40 -:10BBC000CDBF809108128823F1F180E090E0A0E8D9 -:10BBD000BFE3898B9A8BAB8BBC8B1D8A1E8A1F8A15 -:10BBE000188E19861A861B861C868D879E87AF87BE -:10BBF000B88B19821A821B821C821D821E821F82B0 -:10BC00001886AE014F5F5F4FBE01675F7F4FCE0169 -:10BC100041960E94A8CE0F94901D80E00F94FF1DC6 -:10BC20006093F6097093F7098093F8099093F909E6 -:10BC300081E00F94FF1D6093FA097093FB098093D4 -:10BC4000FC099093FD0968960FB6F894DEBF0FBE0D -:10BC5000CDBFDF91CF9108954F925F926F927F9207 -:10BC60008F929F92AF92BF92CF92DF92EF92FF920C -:10BC70001F93CF93DF93CDB7DEB7A8970FB6F89495 -:10BC8000DEBF0FBECDBF85EE9FE00F94F5CC69A35C -:10BC90007AA38BA39CA3698B7A8B8B8B9C8B89EE6D -:10BCA0009FE00F94F5CC6DA37EA38FA398A76D8B17 -:10BCB0007E8B8F8B988F8DED9FE00F94F5CC6B0171 -:10BCC0007C0169877A878B879C8781EE9FE00F9440 -:10BCD000F5CC4B015C016D877E878F87988B85ED56 -:10BCE0009FE00F94F5CC698F7A8F8B8F9C8F69833F -:10BCF0007A838B839C8389ED9FE00F94F5CC6D8FC5 -:10BD00007E8F8F8F98A36D837E838F83988789A181 -:10BD10009AA1ABA1BCA18F3F9F4FAF4FBF4FA9F0DE -:10BD20008DA19EA1AFA1B8A58F3F9F4FAF4FBF4F31 -:10BD300061F08FEFC816D806E806F80631F08FEFED -:10BD400088169806A806B80619F49EDEF7DEC0C06D -:10BD5000898D9A8DAB8DBC8D8F3F9F4FAF4FBF4F5D -:10BD6000A1F38D8D9E8DAF8DB8A18F3F9F4FAF4FAB -:10BD7000BF4F59F3A7019601C701B6010F9444C301 -:10BD80002B013C01A5019401C501B4010F9444C3EA -:10BD90009B01AC01C301B2010F9496BF0F94FDC388 -:10BDA0002B013C0126E636E646E65FE30F946FC0C2 -:10BDB00087FD0DC011E02DEC3CEC4CE85FE3C301C6 -:10BDC000B2010F9472C218161CF010E001C011E00D -:10BDD000298D3A8D4B8D5C8DCA01B9010F9444C3F6 -:10BDE0002B013C012D8D3E8D4F8D58A1CA01B9010B -:10BDF0000F9444C39B01AC01C301B2010F9496BFE1 -:10BE00000F94FDC32B013C0126E636E646E65FE3D0 -:10BE10000F946FC087FD0AC02DEC3CEC4CE85FE34B -:10BE2000C301B2010F9472C218160CF411E029A1DB -:10BE30003AA14BA15CA1CA01B9010F9444C32B01E3 -:10BE40003C012DA13EA14FA158A5CA01B9010F94F3 -:10BE500044C39B01AC01C301B2010F9496BF0F9480 -:10BE6000FDC320E030E040E751E40F9472C21816A1 -:10BE70000CF411E0298D3A8D4B8D5C8DC701B60114 -:10BE80000F9444C36B017C012D8D3E8D4F8D58A1C5 -:10BE9000C501B4010F9444C39B01AC01C701B601B5 -:10BEA0000F9496BF9F772DEC3CEC4CEC5DE30F9428 -:10BEB00072C218160CF449CF111147CFAE014F5E74 -:10BEC0005F4FBE016F5F7F4FCE0109960E94A8CEE3 -:10BED000A8960FB6F894DEBF0FBECDBFDF91CF910D -:10BEE0001F91FF90EF90DF90CF90BF90AF909F9009 -:10BEF0008F907F906F905F904F9008954F925F92D8 -:10BF00006F927F928F929F92AF92BF92CF92DF9269 -:10BF1000EF92FF920F931F93CF93DF93C6EFD9E079 -:10BF20002091E0113091E1114091E2115091E31123 -:10BF3000688179818A819B810F9495BF4B015C0157 -:10BF40000AEF19E02091E4113091E5114091E611DA -:10BF50005091E711F80160817181828193810F9482 -:10BF600095BF6B017C012091E8113091E91140915E -:10BF7000EA115091EB11C501B4010F9444C32B0198 -:10BF80003C012091EC113091ED114091EE11509156 -:10BF9000EF11C701B6010F9444C39B01AC01C3016B -:10BFA000B2010F9496BF688379838A839B83209123 -:10BFB000F0113091F1114091F2115091F311C5013E -:10BFC000B4010F9444C34B015C012091F4113091F2 -:10BFD000F5114091F6115091F711C701B6010F9478 -:10BFE00044C39B01AC01C501B4010F9496BFF80195 -:10BFF0006083718382839383DF91CF911F910F912F -:10C00000FF90EF90DF90CF90BF90AF909F908F9078 -:10C010007F906F905F904F9008957F928F929F9244 -:10C02000AF92BF92CF92DF92EF92FF920F931F9346 -:10C03000CF93DF934B015C01742E81E00F94AB151D -:10C04000182F80E00F94B115D82F0F94A615809269 -:10C05000FE099092FF09A092000AB092010A20E026 -:10C0600030E040E752E46091620270916302809197 -:10C070006402909165020F9476C00E9443D00E94A2 -:10C08000C1D00F94A615C82F882309F481C000E001 -:10C09000C12CD12C7601071509F454C020E030E002 -:10C0A00040E05FE36091FE097091FF098091000A12 -:10C0B0009091010A0F9496BF6093FE097093FF0957 -:10C0C0008093000A9093010A20E030E040E752E4B8 -:10C0D00060916202709163028091640290916502A6 -:10C0E0000F9476C00E9443D08092FE099092FF097F -:10C0F000A092000AB092010A20E030E040E753E449 -:10C100006091620270916302809164029091650275 -:10C110000F9476C00E9443D00E94C1D00F94A61500 -:10C120008823B1F12091FE093091FF094091000A66 -:10C130005091010AC701B6010F9496BF6B017C01B3 -:10C140000F5FA9CF023048F4C092FE09D092FF09D8 -:10C15000E092000AF092010A14C0602F70E080E0C3 -:10C1600090E00F940FC19B01AC01C701B6010F9481 -:10C1700076C06093FE097093FF098093000A909344 -:10C18000010A812F0F94AB158D2F0F94B11507C0A5 -:10C19000812F0F94AB158D2F0F94B115C0E08C2F0C -:10C1A000DF91CF911F910F91FF90EF90DF90CF9093 -:10C1B000BF90AF909F908F907F9008952F923F9265 -:10C1C0004F925F926F927F928F929F92AF92BF92A7 -:10C1D000CF92DF92EF92FF920F931F93CF93DF9353 -:10C1E000CDB7DEB7A3970FB6F894DEBF0FBECDBFB5 -:10C1F00020E030E040E752E460915A0270915B0227 -:10C2000080915C0290915D020F9476C02B013C01FD -:10C21000C090F609D090F709E090F809F090F9097C -:10C2200020E030E040E051E4C701B6010F9495BF33 -:10C2300069837A831C0120E030E040E051E4C701CB -:10C24000B6010F9496BF6F83788789879A8780900D -:10C25000FA099090FB09A090FC09B090FD0920E03C -:10C2600030E040EC50E4C501B4010F9495BF6B83FE -:10C270007C838D839E8320E030E040EC50E4C50158 -:10C28000B4010F9496BF6B877C878D879E8720E0D3 -:10C2900030E0A90169817A81C1010F946FC087FFE5 -:10C2A00004C019821A82212C312C20E030E04FE7A3 -:10C2B00053E46F81788589859A850F9472C2181628 -:10C2C00034F41F8218862FE7298733E43A8720E069 -:10C2D00030E040E850EC6B817C818D819E810F9431 -:10C2E0006FC087FF08C080E090E0A0E8B0EC8B83CF -:10C2F0009C83AD83BE8320E030E042E553E46B8550 -:10C300007C858D859E850F9472C2181644F420E0BA -:10C3100030E042E553E42B873C874D875E872B81D5 -:10C320003C814D815E816B857C858D859E850F94DA -:10C3300095BF6B8B7C8B8D8B9E8B0F945CC00F9409 -:10C34000DEC04B016F8B80E00F94AB15E090FE09CF -:10C35000F090FF090091000A1091010A6301520157 -:10C360002B813C814D815E8169817A81C1010E946E -:10C37000F3CF0F94931581E00F94B11531E038A3FA -:10C380009F89892F90E0A0E0B0E08F87988BA98BE0 -:10C39000BA8BC401992701979C01442737FD40952A -:10C3A000542F288F398F4A8F5B8F20E030E040E296 -:10C3B00051EC6091FE097091FF098091000A909103 -:10C3C000010A0F9472C2181674F48B819C81AD819E -:10C3D000BE818093FA099093FB09A093FC09B09366 -:10C3E000FD091BA27AC00E947FD01F86C401992735 -:10C3F00001979C01442737FD4095542F288F398F92 -:10C400004A8F5B8FA7C16F85788989899A890F9434 -:10C410000FC19B01AC016DEC7CEC8CE49EE30F94AE -:10C4200076C09B01AC016091FE097091FF0980917B -:10C43000000A9091010A0F9495BF6093FE097093D2 -:10C44000FF098093000A9093010A2091FA09309124 -:10C45000FB094091FC095091FD09A8A1AA2309F408 -:10C4600042C0BF81A885E985E9A3FA85630152012D -:10C470007B018C016B2F7A2F89A19F2F0E94F3CF14 -:10C48000F8A121E0F227F8A30F94A6158111ABCFF4 -:10C49000688D798D8A8D9B8D0F9411C19B01AC01A4 -:10C4A0006B897C898D899E890F9476C09B01AC0134 -:10C4B0006091FA097091FB098091FC099091FD0946 -:10C4C0000F9496BF6093FA097093FB098093FC095F -:10C4D0009093FD093BA13F5F3BA34BA15F894517AB -:10C4E00008F491CF05C0B981AA8129A2F32DBECF4E -:10C4F0001BA24BA15F89451708F057CF6F8578893C -:10C5000089899A890F940FC19B01AC016DEC7CEC79 -:10C510008CE49EE30F9476C09B01AC016091FE0910 -:10C520007091FF098091000A9091010A0F9495BFC4 -:10C530006093FE097093FF098093000A9093010AAB -:10C540002091FA093091FB094091FC095091FD09B5 -:10C55000A8A1AA2331F0BF81A885E985E9A3FA85BE -:10C5600004C0B981AA8129A2F32D630152017B0184 -:10C570008C016B2F7A2F89A19F2F0E94F3CFF8A1F6 -:10C5800021E0F227F8A30F94A61581112CCF688D16 -:10C59000798D8A8D9B8D0F9411C19B01AC016B89A4 -:10C5A0007C898D899E890F9476C09B01AC01609136 -:10C5B000FA097091FB098091FC099091FD090F9493 -:10C5C00095BF6093FA097093FB098093FC099093DF -:10C5D000FD093BA13F5F3BA38CCF2091FA0930912D -:10C5E000FB094091FC095091FD09AA2009F4D2C031 -:10C5F000BF81A885C984BA84830172016B2F7A2F09 -:10C600008C2D9B2D0E9417D00F94A6158111C7C0A9 -:10C61000688D798D8A8D9B8D0F9411C19B01AC0122 -:10C620006B897C898D899E890F9476C09B01AC01B2 -:10C630006091FA097091FB098091FC099091FD09C4 -:10C640000F9496BF6093FA097093FB098093FC09DD -:10C650009093FD09D39431E0A3264F89D41608F4B2 -:10C66000BCCFD12C0E947FD0DD2079F18090FA09D7 -:10C670009090FB09A090FC09B090FD0980E00F9418 -:10C68000B1158B859C85AD85BE858093FA09909305 -:10C69000FB09A093FC09B093FD09830172019C0181 -:10C6A000AD0169817A81C1010E9417D081E00F94A8 -:10C6B000B11591E09AA3C12CFF89CF1608F472C07E -:10C6C000D12C0E947FD0D110B3C02F852F5F2F8730 -:10C6D000233009F4DCC18F858823E1F12AE037EDAE -:10C6E00043EA5CE36091FE097091FF098091000AC2 -:10C6F0009091010A0F9495BF6093FE097093FF0912 -:10C700008093000A9093010A20E030E040E752E471 -:10C71000609162027091630280916402909165025F -:10C720000F9476C05B016C012091FA093091FB09EE -:10C730004091FC095091FD096091F6097091F7094B -:10C740008091F8099091F909E12CF12C00EA10E4AC -:10C750000E94F3CF80E00F94AB1580E00F94B115E9 -:10C760002B813C814D815E812093FA093093FB0936 -:10C770004093FC095093FD098301720169817A811C -:10C78000C1010E9417D081E00F94B115AA24A3948F -:10C79000D12C63CFB981AA81C22CB32C2DCFDD243B -:10C7A000D39460CF2091FA093091FB094091FC09A4 -:10C7B0005091FD09AAA1AA2329F0BF81A885E98586 -:10C7C000FA8503C0B981AA81F101830172016B2F3F -:10C7D0007A2FCF010E9417D00F94A615811171CF27 -:10C7E000688D798D8A8D9B8D0F9411C19B01AC0151 -:10C7F0006B897C898D899E890F9476C09B01AC01E1 -:10C800006091FA097091FB098091FC099091FD09F2 -:10C810000F9495BF6093FA097093FB098093FC090C -:10C820009093FD09C394BAA1E1E0BE27BAA344CF17 -:10C830002091FA093091FB094091FC095091FD09C2 -:10C84000C501B4010F9496BF20E030E040E05FE303 -:10C850000F9444C36093FA097093FB098093FC0919 -:10C860009093FD0980E00F94B1152091FA09309161 -:10C87000FB094091FC095091FD0983017201698116 -:10C880007A81C1010E9417D081E00F94B1152091E7 -:10C89000FA093091FB094091FC095091FD096F8123 -:10C8A000788589859A850E9417D00E947FD00F9441 -:10C8B000A615882309F409CF8090F6099090F7090E -:10C8C000A090F809B090F90980E00F94B11520917B -:10C8D000FA093091FB094091FC095091FD096F81E3 -:10C8E000788589859A850E9417D081E00F94B115CB -:10C8F0002091FA093091FB094091FC095091FD0902 -:10C9000069817A81C1010E9417D00E947FD00F9463 -:10C91000A615882309F4D9CE2091F6093091F7099C -:10C920004091F8095091F90980E02C8F3D8F4E8F8E -:10C930005F8F0F94B1152C8D3D8D4E8D5F8DC50190 -:10C94000B4010F9496BF20E030E040E05FE30F9425 -:10C9500044C36093F6097093F7098093F8099093A4 -:10C96000F9092091FA093091FB094091FC09509195 -:10C97000FD090E9417D080E00F94B1156091F6096F -:10C980007091F7098091F8099091F9092B813C8108 -:10C990004D815E810E9417D081E00F94B1156091A6 -:10C9A000F6097091F7098091F8099091F9092B85A2 -:10C9B0003C854D855E850E9417D00E947FD00F94E4 -:10C9C000A615882309F481CE8090FA099090FB097E -:10C9D000A090FC09B090FD0980E00F94B115609122 -:10C9E000F6097091F7098091F8099091F9092B8562 -:10C9F0003C854D855E850E9417D081E00F94B1156E -:10CA00006091F6097091F7098091F8099091F90900 -:10CA10002B813C814D815E810E9417D00E947FD086 -:10CA20000F94A615882309F450CE2091FA0930916D -:10CA3000FB094091FC095091FD0980E02C8F3D8F4E -:10CA40004E8F5F8F0F94B1152C8D3D8D4E8D5F8D68 -:10CA5000C501B4010F9496BF20E030E040E05FE3F1 -:10CA60000F9444C39B01AC016093FA097093FB09D6 -:10CA70008093FC099093FD096091F6097091F70984 -:10CA80008091F8099091F9090E9417D001C0D12C2A -:10CA900080E00F94B1158D2DA3960FB6F894DEBFEC -:10CAA0000FBECDBFDF91CF911F910F91FF90EF90FF -:10CAB000DF90CF90BF90AF909F908F907F906F90BE -:10CAC0005F904F903F902F9008952F923F924F92FA -:10CAD0005F926F927F928F929F92AF92BF92CF920E -:10CAE000DF92EF92FF920F931F93CF93DF93CDB717 -:10CAF000DEB769970FB6F894DEBF0FBECDBF80E0FA -:10CB00000F94AB15898F80E00F94B115382E20E07B -:10CB100030E040E752E460915A0270915B028091EC -:10CB20005C0290915D020F9476C0698B7A8B8B8B3F -:10CB30009C8B4090F6095090F7096090F80970902E -:10CB4000F9098090FA099090FB09A090FC09B09037 -:10CB5000FD09212C19861A861B861C861D821E82C1 -:10CB60001F82188681E02816B9F0281660F092E03E -:10CB700029122CC024EF3DEF44EB50E4C301B20175 -:10CB80000F9496BF12C024EF3DEF44EB50E4C30175 -:10CB9000B2010F9495BF09C024EF3DEF44EB50E480 -:10CBA000C301B2010F9496BF19C06093C10970937D -:10CBB000C2098093C3099093C40924EF3DEF44EB6D -:10CBC00050E4C501B4010F9495BF18C024EF3DEFA8 -:10CBD00044EB50E4C301B2010F9495BF6093C109C7 -:10CBE0007093C2098093C3099093C40924EF3DEF69 -:10CBF00044EB50E4C501B4010F9496BF6093C5099E -:10CC00007093C6098093C7099093C8098091C109A0 -:10CC10009091C209A091C309B091C4098D8B9E8BDC -:10CC2000AF8BB88FA3019201BC01CD010F9495BFCA -:10CC30006D877E878F87988BA50194016091C509C8 -:10CC40007091C6098091C7099091C8090F9495BF4A -:10CC500069837A838B839C832D853E854F85588994 -:10CC6000CA01B9010F9444C36B017C0129813A8147 -:10CC70004B815C81CA01B9010F9444C39B01AC0193 -:10CC8000C701B6010F9496BF0F94FDC36B017C01E1 -:10CC900020E030E0A9016D897E898F89988D0F94FD -:10CCA0006FC087FF0FC01092C1091092C209109285 -:10CCB000C3091092C409A70196016D817E818F81FD -:10CCC000988522C020E030E04FE753E46D897E89EB -:10CCD0008F89988D0F9472C2181664F580E090E0E9 -:10CCE000AFE7B3E48093C1099093C209A093C3094D -:10CCF000B093C4092D813E814F815885BC01CD017F -:10CD00000F9495BFA70196010F9476C029813A81AF -:10CD10004B815C810F9444C39B01AC01C501B401FC -:10CD20000F9496BF6093C5097093C6098093C70995 -:10CD30009093C8098091C5099091C609A091C7092F -:10CD4000B091C80989839A83AB83BC8320E030E02B -:10CD500040E850ECBC01CD010F946FC087FF27C0A5 -:10CD600020E030E040E850E469857A858B859C8539 -:10CD70000F9496BFA70196010F9476C02D853E852E -:10CD80004F8558890F9444C39B01AC01C301B20184 -:10CD90000F9496BF6093C1097093C2098093C30931 -:10CDA0009093C40980E090E0A0E8B0EC32C020E0AD -:10CDB00030E042E553E469817A818B819C810F9454 -:10CDC00072C2181674F529853A854B855C8560E03A -:10CDD00070E082E593E40F9495BFA70196010F944C -:10CDE00076C02D853E854F8558890F9444C39B019D -:10CDF000AC01C301B2010F9496BF6093C109709357 -:10CE0000C2098093C3099093C40980E090E0A2E531 -:10CE1000B3E48093C5099093C609A093C709B09362 -:10CE2000C80980E00F94AB152091C5093091C6095F -:10CE30004091C7095091C8096091C1097091C20918 -:10CE40008091C3099091C409E988FA880B891C89EB -:10CE50000E9417D081E00F94AB15E988FA880B89FE -:10CE60001C89A5019401C301B2010E9417D00E9440 -:10CE70007FD02091F6093091F7094091F80950913F -:10CE8000F9096D817E818F8198850F9496BF6D839E -:10CE90007E838F8398872091FA093091FB09409116 -:10CEA000FC095091FD0969857A858B859C850F94D5 -:10CEB00096BF69877A878B879C87239494E0291291 -:10CEC00051CE20E030E040E85EE36D817E818F81CD -:10CED00098850F9444C36093F6097093F709809383 -:10CEE000F8099093F90920E030E040E85EE36985B5 -:10CEF0007A858B859C850F9444C36093FA0970935F -:10CF0000FB098093FC099093FD0980E00F94AB1519 -:10CF10002091FA093091FB094091FC095091FD09DB -:10CF20006091F6097091F7098091F8099091F909DB -:10CF3000E988FA880B891C890E9417D0898D0F9483 -:10CF4000AB15832D0F94B11580E069960FB6F89458 -:10CF5000DEBF0FBECDBFDF91CF911F910F91FF902C -:10CF6000EF90DF90CF90BF90AF909F908F907F9089 -:10CF70006F905F904F903F902F9008953F924F9207 -:10CF80005F926F927F928F929F92AF92BF92CF9259 -:10CF9000DF92EF92FF920F931F93CF93DF93CDB762 -:10CFA000DEB72C970FB6F894DEBF0FBECDBFD82EDC -:10CFB0008091F6099091F709A091F809B091F909CB -:10CFC00089839A83AB83BC838091FA099091FB0992 -:10CFD000A091FC09B091FD098D839E83AF83B88732 -:10CFE00080E00F94AB1520E030E040E051E469812F -:10CFF0007A818B819C810F9495BF4B015C0120E06D -:10D0000030E040E051E469817A818B819C810F940A -:10D0100096BF2B013C0120E030E0A901C501B4011D -:10D020000F946FC087FF03C0812C912C540120E026 -:10D0300030E04FE753E4C301B2010F9472C21816F7 -:10D0400034F4412C512CAFE76A2EA3E47A2E80E011 -:10D050000F94B11520E030E040E752E460915A02AD -:10D0600070915B0280915C0290915D020F9476C09A -:10D070002091FA093091FB094091FC095091FD097A -:10D080007B018C01C501B4010E9417D081E00F948F -:10D09000B11520E030E040E752E460915A0270910F -:10D0A0005B0280915C0290915D020F9476C02091AA -:10D0B000FA093091FB094091FC095091FD097B016F -:10D0C0008C01C301B2010E9417D00E947FD00F943F -:10D0D000A615882309F474C08091F6099091F70988 -:10D0E000A091F809B091F90989879A87AB87BC8725 -:10D0F00080E00F94B11520E030E040E752E4609109 -:10D100005A0270915B0280915C0290915D020F94D3 -:10D1100076C02091FA093091FB094091FC095091A9 -:10D12000FD097B018C01C301B2010E9417D081E08F -:10D130000F94B11520E030E040E752E460915A02CC -:10D1400070915B0280915C0290915D020F9476C0B9 -:10D150002091FA093091FB094091FC095091FD0999 -:10D160007B018C01C501B4010E9417D00E947FD0C1 -:10D170000F94A615882321F18090F6099090F70965 -:10D18000A090F809B090F90929853A854B855C850E -:10D19000C501B4010F9495BF2B013C0120E030E0A4 -:10D1A00040E050E40F946FC087FF17C020E030E0EC -:10D1B00040E85FE3C301B2010F946FC087FF0FC067 -:10D1C00089819A81AB81BC818093F6099093F7099C -:10D1D000A093F809B093F909CEC1312C02C03324D1 -:10D1E000339480E00F94B115A501940169857A8587 -:10D1F0008B859C850F9496BF20E030E040E05FE394 -:10D200000F9444C34B015C016093F6097093F709D6 -:10D210008093F8099093F90920E030E040E752E468 -:10D2200060915A0270915B0280915C0290915D0264 -:10D230000F9476C02091FA093091FB094091FC09C6 -:10D240005091FD097B018C01C501B4010E9417D0EA -:10D2500020E030E040E051E46D817E818F8198854F -:10D260000F9495BF2B013C0120E030E040E051E4F9 -:10D270006D817E818F8198850F9496BF69837A83B3 -:10D280008B839C8320E030E040E850ECC301B20186 -:10D290000F946FC087FF06C0412C512CF0E86F2E11 -:10D2A000F0EC7F2E20E030E042E553E469817A81A2 -:10D2B0008B819C810F9472C2181644F480E090E038 -:10D2C000A2E5B3E489839A83AB83BC8380E00F94A7 -:10D2D000B11520E030E040E752E460915A027091CD -:10D2E0005B0280915C0290915D020F9476C0809009 -:10D2F000F6099090F709A090F809B090F9097B0120 -:10D300008C01A3019201C501B4010E9417D0DD2058 -:10D3100009F452C020E030E040E752E4609162023C -:10D320007091630280916402909165020F9476C0BF -:10D330005B016C0120E030E040EC5FE36091FE09AE -:10D340007091FF098091000A9091010A0F9496BF95 -:10D350007B018C016091F6097091F7098091F809C1 -:10D360009091F909A30192010E94F3CF20E030E0EF -:10D3700040E752E46091620270916302809164021E -:10D38000909165020F9476C05B016C01E090FE09FC -:10D39000F090FF090091000A1091010A6091F609CE -:10D3A0007091F7098091F8099091F909A301920110 -:10D3B0000E94F3CF1C9928C081E00F94B11520E0A2 -:10D3C00030E040E752E460915A0270915B02809134 -:10D3D0005C0290915D020F9476C07B018C0160919C -:10D3E000F6097091F7098091F8099091F90929815E -:10D3F0003A814B815C810E9417D00E947FD00F94AC -:10D40000A615882309F470C08090FA099090FB0952 -:10D41000A090FC09B090FD0980E00F94B11520E0C8 -:10D4200030E040E752E460915A0270915B028091D3 -:10D430005C0290915D020F9476C07B018C0160913B -:10D44000F6097091F7098091F8099091F9092981FD -:10D450003A814B815C810E9417D081E00F94B11515 -:10D4600020E030E040E752E460915A0270915B02A4 -:10D4700080915C0290915D020F9476C07B018C01DB -:10D480006091F6097091F7098091F8099091F90976 -:10D49000A30192010E9417D00E947FD00F94A6157D -:10D4A000882311F14090FA095090FB096090FC0923 -:10D4B0007090FD09A5019401C301B2010F9495BFBD -:10D4C0006B017C0120E030E040E050E40F946FC03D -:10D4D00087FF19C020E030E040E85FE3C701B601F4 -:10D4E0000F946FC087FF0DC08D819E81AF81B8857D -:10D4F0008093FA099093FB09A093FC09B093FD096E -:10D500003AC03324339480E00F94B115A301920103 -:10D51000C501B4010F9496BF20E030E040E05FE326 -:10D520000F9444C34B015C016093FA097093FB09AB -:10D530008093FC099093FD0920E030E040E752E43D -:10D5400060915A0270915B0280915C0290915D0241 -:10D550000F9476C07B018C016091F6097091F709F8 -:10D560008091F8099091F909A50194010E9417D0C2 -:10D5700081E0832526C080E00F94B11520E030E0E3 -:10D5800040E752E460915A0270915B0280915C0224 -:10D5900090915D020F9476C07B018C012091FA0975 -:10D5A0003091FB094091FC095091FD096091F60909 -:10D5B0007091F7098091F8099091F9090E9417D0AC -:10D5C00080E02C960FB6F894DEBF0FBECDBFDF9182 -:10D5D000CF911F910F91FF90EF90DF90CF90BF9070 -:10D5E000AF909F908F907F906F905F904F903F9003 -:10D5F00008952F923F924F925F926F927F928F92F7 -:10D600009F92AF92BF92CF92DF92EF92FF920F93D1 -:10D610001F93CF93DF93CDB7DEB7A5970FB6F894DE -:10D62000DEBF0FBECDBF4090F6095090F709609065 -:10D63000F8097090F9098091FA099091FB09A0917D -:10D64000FC09B091FD098B8F9C8FAD8FBE8F20E0C0 -:10D6500030E040E850E4C301B2010F9495BF6E87FB -:10D660007F87888B998B20E030E040E850E4C3014D -:10D67000B2010F9496BF6E8B7F8B888F998F20E0BD -:10D6800030E040E850E46B8D7C8D8D8D9E8D0F9445 -:10D6900095BF6D837E838F83988720E030E040E8DC -:10D6A00050E46B8D7C8D8D8D9E8D0F9496BF4B01BC -:10D6B0005C0120E030E0A9016E857F858889998929 -:10D6C0000F946FC087FF04C01E861F86188A198AB0 -:10D6D00020E030E04FE753E46E897F89888D998D93 -:10D6E0000F9472C2181644F480E090E0AFE7B3E400 -:10D6F0008E8B9F8BA88FB98F20E030E040E850ECF4 -:10D700006D817E818F8198850F946FC087FF06C0E1 -:10D710001D821E8290E89F83A0ECA88720E030E065 -:10D7200042E553E4C501B4010F9472C2181634F4F3 -:10D73000812C912CB2E5AB2EB3E4BB2E3D802E8024 -:10D74000BF81B8A3E885EF8F1A8A1B8A1C8A1D8ABD -:10D7500019821A821B821C82A5019401632D722DED -:10D7600088A19F8D0F946FC087FFECC080E00F945D -:10D77000B11520E030E040E752E460915A02709128 -:10D780005B0280915C0290915D020F9476C07B01F8 -:10D790008C01232D322D48A15F8D6E857F85888970 -:10D7A00099890E9417D081E00F94B11520E030E0F4 -:10D7B00040E752E460915A0270915B0280915C02F2 -:10D7C00090915D020F9476C07B018C01232D322D48 -:10D7D00048A15F8D6E897F89888D998D0E9417D0B1 -:10D7E0000E947FD00F94A615882309F49CC08091D5 -:10D7F000F6099091F709A091F809B091F909898784 -:10D800009A87AB87BC8780E00F94B11520E030E0A9 -:10D8100040E752E460915A0270915B0280915C0291 -:10D8200090915D020F9476C07B018C01232D322DE7 -:10D8300048A15F8D6E897F89888D998D0E9417D050 -:10D8400081E00F94B11520E030E040E752E46091B0 -:10D850005A0270915B0280915C0290915D020F947C -:10D8600076C07B018C01232D322D48A15F8D6E8502 -:10D870007F85888999890E9417D00E947FD00F9454 -:10D88000A615882309F44FC0C090F609D090F70977 -:10D89000E090F809F090F90929853A854B855C8577 -:10D8A000C701B6010F9495BF162F7D878A8F092F68 -:10D8B00029813A814B815C810F9472C21816CCF495 -:10D8C000A701960169857A858B859C850F9496BF03 -:10D8D00020E030E040E05FE30F9444C36A8B7B8B31 -:10D8E0008C8B9D8B19839D859A83AA8DAB830C832A -:10D8F0001AC020E030E0A90169817A818B819C8186 -:10D900000F9472C218167CF42DEC3CEC4CEC5DE3E9 -:10D91000632D722D88A19F8D0F9495BF6D837E839B -:10D920008F8398870FC02DEC3CEC4CEC5DE3632DAE -:10D93000722D88A19F8D0F9496BF362E272E88A317 -:10D940009F8F0ACF20E030E0A90169817A818B8125 -:10D950009C810F946FC0811109C04092F6095092CA -:10D96000F7096092F8097092F909E6C280E00F9415 -:10D97000B11520E030E040E752E460915A02709126 -:10D980005B0280915C0290915D020F9476C06B0106 -:10D990007C0120E030E040E051E46D817E818F81A8 -:10D9A00098850F9496BF9B01AC01870176016A8927 -:10D9B0007B898C899D890E9417D081E00F94B115D5 -:10D9C00020E030E040E752E460915A0270915B023F -:10D9D00080915C0290915D020F9476C06B017C0196 -:10D9E00020E030E040E051E46D817E818F819885B8 -:10D9F0000F9495BF8B015C0120E030E040E850ECD3 -:10DA00000F9472C218162CF080E090E070E860EC81 -:10DA100003C0C8017A2D6B2D870176019C01472F29 -:10DA2000562F6A897B898C899D890E9417D00E9414 -:10DA30007FD00F94A615882309F47EC29091FA092D -:10DA40009A8FA091FB09AF8FB091FC09B8A3E09128 -:10DA5000FD09E9A32D813E814F815885692F7A2FD9 -:10DA60008B2F9E2F0F946FC018160CF065C27A8C06 -:10DA70006F8C58A049A01AA21BA21CA21DA21B8237 -:10DA80001C8219861D862D813E814F815885672D08 -:10DA9000762D852D942D0F9472C287FDE2C080E013 -:10DAA0000F94B11520E030E040E752E460915A0253 -:10DAB00070915B0280915C0290915D020F9476C040 -:10DAC0007B018C01272D362D452D542D6E857F85AC -:10DAD000888999890E9417D081E00F94B11520E0C0 -:10DAE00030E040E752E460915A0270915B0280910D -:10DAF0005C0290915D020F9476C07B018C01272D12 -:10DB0000362D452D542D6E897F89888D998D0E94E3 -:10DB100017D00E947FD00F94A615882309F492C0D5 -:10DB20008090F6099090F709A090F809B090F90953 -:10DB300080E00F94B11520E030E040E752E46091BE -:10DB40005A0270915B0280915C0290915D020F9489 -:10DB500076C07B018C01272D362D452D542D6E89E5 -:10DB60007F89888D998D0E9417D081E00F94B1151F -:10DB700020E030E040E752E460915A0270915B028D -:10DB800080915C0290915D020F9476C07B018C01C4 -:10DB9000272D362D452D542D6E857F8588899989B1 -:10DBA0000E9417D00E947FD00F94A615882309F4F5 -:10DBB00049C0C090F609D090F709E090F809F090BC -:10DBC000F909A5019401C701B6010F9495BF162F5D -:10DBD000272E382E092F2B813C8149855D850F9496 -:10DBE00072C21816ACF4A7019601C501B4010F94D6 -:10DBF00096BF20E030E040E05FE30F9444C36AA3A7 -:10DC00007BA38CA39DA31B832C8239860D871AC00E -:10DC100020E030E0A9016B817C8189859D850F948E -:10DC200072C218167CF42DEC3CEC4CEC5DE3672DD5 -:10DC3000762D852D942D0F9496BF6A8F7F8F88A3A4 -:10DC400099A30FC02DEC3CEC4CEC5DE3672D762DD9 -:10DC5000852D942D0F9495BF762E672E582E492E24 -:10DC600012CF20E030E0A9016B817C8189859D8500 -:10DC70000F946FC0882309F4F3C02A8D3F8D48A10B -:10DC800059A16D817E818F8198850F9496BF20E088 -:10DC900030E040E05FE30F9444C369837A831C0162 -:10DCA0009AA19A8BABA1AB8BBCA1BC8BEDA1ED8BE8 -:10DCB0002D813E814F815885672D762D852D942DA0 -:10DCC0000F9472C287FDD2C080E00F94B11520E09E -:10DCD00030E040E752E460915A0270915B0280911B -:10DCE0005C0290915D020F9476C07B018C01272D20 -:10DCF000362D452D542D6E857F85888999890E9402 -:10DD000017D081E00F94B11520E030E040E752E4F5 -:10DD100060915A0270915B0280915C0290915D0269 -:10DD20000F9476C07B018C01272D362D452D542D67 -:10DD30006E897F89888D998D0E9417D00E947FD02F -:10DD40000F94A615882309F47CC08090F609909062 -:10DD5000F709A090F809B090F90980E00F94B11587 -:10DD600020E030E040E752E460915A0270915B029B -:10DD700080915C0290915D020F9476C07B018C01D2 -:10DD8000272D362D452D542D6E897F89888D998DAF -:10DD90000E9417D081E00F94B11520E030E040E7F9 -:10DDA00052E460915A0270915B0280915C02909102 -:10DDB0005D020F9476C07B018C01272D362D452DF9 -:10DDC000542D6E857F85888999890E9417D00E947D -:10DDD0007FD00F94A6158823A1F1C090F609D090AA -:10DDE000F709E090F809F090F909A5019401C7013D -:10DDF000B6010F9495BF162F7BA38AA3092F2B8101 -:10DE00003C8149855D850F9472C21816D4F4A70130 -:10DE10009601C501B4010F9496BF20E030E040E0C8 -:10DE20005FE30F9444C36A8B7B8B8C8B9D8B7982D1 -:10DE30006A82252C342C1B83FBA1FC838AA1898751 -:10DE40000D872DEC3CEC4CEC5DE3672D762D852D9C -:10DE5000942D0F9495BF762E672E582E492E28CFDD -:10DE60009D819983AE81AA832F80388480E00F94AE -:10DE7000B11520E030E040E752E460915A02709121 -:10DE80005B0280915C0290915D020F9476C06B0101 -:10DE90007C0120E030E040E051E469817A81C101F9 -:10DEA0000F9496BF9B01AC01870176016A897B893B -:10DEB0008C899D890E9417D081E00F94B11520E0D4 -:10DEC00030E040E752E460915A0270915B02809129 -:10DED0005C0290915D020F9476C06B017C0120E0A2 -:10DEE00030E040E051E469817A81C1010F9495BF2F -:10DEF0008B015C0120E030E040E850EC0F9472C2EE -:10DF000018162CF080E090E070E860EC03C0C801C7 -:10DF10007A2D6B2D870176019C01472F562F6A8938 -:10DF20007B898C899D890E9417D00E947FD00F9495 -:10DF3000A6158E8B81110DC08B8D9C8DAD8DBE8DE8 -:10DF40008093FA099093FB09A093FC09B093FD0913 -:10DF50001EC1C090FA09D090FB09E090FC09F09036 -:10DF6000FD0920E030E040E05FE36B817C81898542 -:10DF70009D850F9444C36E877F87888B998B20E0A3 -:10DF800030E040E850E4C701B6010F9496BF2E85FB -:10DF90003F85488959890F946FC087FF6CC02981DC -:10DFA0003A81A101C701B6010F946FC087FDA2C0DD -:10DFB00020E030E040E85FE36B817C8189859D85CE -:10DFC0000F946FC087FD96C029813A81A101C701D6 -:10DFD000B6010F9495BF4B015C012B813C814985B3 -:10DFE0005D856B817C8189859D850F9444C32B0160 -:10DFF0003C0120E030E040E051E4C501B4010F9461 -:10E0000044C39B01AC01C301B2010F9476C02B0144 -:10E010003C0120E030E040E05FE3C501B4010F9433 -:10E0200044C39B01AC01C301B2010F9496BF4B01E5 -:10E030005C012DEC3CEC4CEC5FE30F946FC087FD72 -:10E0400059C0A50194016E857F85888999890F94AF -:10E0500096BF20E030E040E05FE30F9444C39B01B3 -:10E06000AC01C701B6010F9495BF69837A831C0187 -:10E07000BB24B39440C0BB24B39420E030E040E024 -:10E0800050E46A897B898C899D890F9472C287FDCF -:10E09000B12C23E333E343E750EC6D817E818F8124 -:10E0A00098850F9472C2181634F520E030E040E0F5 -:10E0B0005FE369817A81C1010F9444C36B017C01E4 -:10E0C0002A8D3F8D48A159A16D817E818F819885D0 -:10E0D0000F9496BF20E030E040E85EE30F9444C325 -:10E0E0009B01AC01C701B6010F9496BF69837A8387 -:10E0F0001C0101C0B12C80E00F94B1158A899B8965 -:10E10000AC89BD898093F6099093F709A093F8092B -:10E11000B093F90989819A81D1018093FA0990938A -:10E12000FB09A093FC09B093FD0920E030E040E733 -:10E1300052E460915A0270915B0280915C0290916E -:10E140005D020F9476C06B017C0120E030E040E876 -:10E1500050EC69817A81C1010F946FC087FF05C0BF -:10E1600070E060E090E880EC04C079816A81922DD3 -:10E17000832D87017601272F362F492F582F6A8943 -:10E180007B898C899D890E9417D0B11042C080E0A4 -:10E190000F94B11520E030E040E850EC6091FA09AE -:10E1A0007091FB098091FC099091FD090F946FC05B -:10E1B00087FF0CC080E090E0A0E8B0EC8093FA0903 -:10E1C0009093FB09A093FC09B093FD0920E030E097 -:10E1D00040E752E460915A0270915B0280915C02C8 -:10E1E00090915D020F9476C07B018C012091FA0919 -:10E1F0003091FB094091FC095091FD096091F609AD -:10E200007091F7098091F8099091F9090E9417D04F -:10E210001E8A8E89A5960FB6F894DEBF0FBECDBFBD -:10E22000DF91CF911F910F91FF90EF90DF90CF90F2 -:10E23000BF90AF909F908F907F906F905F904F9026 -:10E240003F902F9008952F923F924F925F926F923E -:10E250007F928F929F92AF92BF92CF92DF92EF9276 -:10E26000FF920F931F93CF93DF93CDB7DEB76797DE -:10E270000FB6F894DEBF0FBECDBF8C877F836E8351 -:10E280000E94CD5384ECEAE0F2E1DF011D928A9511 -:10E29000E9F7E12CF12CEC85FF27E7FDF095FE87EF -:10E2A000ED87E2EFF9E484918F01882339F00E9431 -:10E2B000D7D10F5F1F4FF8018491F7CF1701FFEF00 -:10E2C0002F1A3F0A4AE050E0B10184E998E00E9429 -:10E2D0004445E091460AF0E0EE0FFF1FE75AF74B86 -:10E2E00085919491BE016F5F7F4F0F94488789811C -:10E2F000843010F083E08983B701882777FD80950B -:10E30000982F0F9411C16A837B838C839D832DEC9E -:10E310003CEC4CE45EE30F9444C32AE939E949E953 -:10E320005EE30F9444C3688779878A879B8720E0E0 -:10E3300030E040EA50E40F9496BF6093FE0970937A -:10E34000FF098093000A9093010A3AE0432E32E1DC -:10E35000532E4EEF642E49E4742E00E010E0EB8A59 -:10E36000C101AA2797FDA095BA2F8C8B9D8BAE8BF0 -:10E37000BF8B0E94CD530F5F1F4FA801698180E0C2 -:10E380000F946448E091460AF0E0EE0FFF1FEB5A4D -:10E39000F74B859194910F94FF5B9B89992389F0AA -:10E3A000E091460AF0E0EE0FFF1FE35AF74B45916C -:10E3B000549169816F5F80E00F94656CC1010F9487 -:10E3C0005D4820E030E040E752E4609162027091E5 -:10E3D000630280916402909165020F9476C00E945E -:10E3E00043D0F30185919591A591B4918093F6095D -:10E3F0009093F709A093F809B093F909F3013496C3 -:10E4000085919591A591B4918093FA099093FB0918 -:10E41000A093FC09B093FD0920E030E040E752E40E -:10E4200060915A0270915B0280915C0290915D0252 -:10E430000F9476C00E9443D08D859E850E94DEE0B9 -:10E44000882309F4AEC1C80101970297D0F520E0F6 -:10E4500030E043E060E070E080E291EC0E940DE08B -:10E4600084E0F82E8D859E85C4D881112AC0FA9447 -:10E4700009F497C12DEC3CEC4CEC5CE36091FE0997 -:10E480007091FF098091000A9091010A0F9495BF45 -:10E490006093FE097093FF098093000A9093010A2C -:10E4A00080E00F94AB1580E00F94B115609162028B -:10E4B0007091630280916402909165020E9443D042 -:10E4C000D1CF6C897D898E899F890F9411C16B0191 -:10E4D0007C01D2012D913D914D915C916A817B81AE -:10E4E0008C819D810F9444C3A70196010F9476C03F -:10E4F0004B015C01A70196016091F6097091F70943 -:10E500008091F8099091F9090F9476C09B01AC01B4 -:10E51000C501B4010F9496BFF201608371838283B9 -:10E5200093838090FA099090FB09A090FC09B09029 -:10E53000FD0924813581468157816A817B818C81E7 -:10E540009D810F9444C3A70196010F9476C06F87F5 -:10E55000788B898B9A8BA7019601C501B4010F9422 -:10E5600076C09B01AC016F85788989899A890F945F -:10E5700096BFD20114966D937D938D939C931797BC -:10E5800020E030E040E850ECC501B4010F946FC0CA -:10E5900087FF0CC080E090E0A0E8B0EC8093FA091F -:10E5A0009093FB09A093FC09B093FD0920E030E0B3 -:10E5B00040E450E4688579858A859B850F9496BFF1 -:10E5C0009B01AC016091FE097091FF098091000AE6 -:10E5D0009091010A0F9496BF6093FE097093FF0912 -:10E5E0008093000A9093010AB8E04B0E511CE8E0BA -:10E5F0006E0E711C0430110509F0BBCE80E090E076 -:10E600000E94AD6020E030E040E950EC60910E12D5 -:10E6100070910F1280911012909111120F946FC08F -:10E6200087FF47C0AE81BF818C9182608C93E1EF00 -:10E63000F9E484918F01882339F00E94D7D10F5FCC -:10E640001F4FF8018491F7CF8AE00E94D7D1EFEBFA -:10E65000F9E484918F01882339F00E94D7D10F5FAC -:10E660001F4FF8018491F7CF40910E1250910F1275 -:10E67000609110127091111222E030E084E998E06C -:10E680000E94F945EBEBF9E484918F01882339F07E -:10E690000E94D7D10F5F1F4FF8018491F7CF22E07E -:10E6A00030E040E050E060E970EC84E998E00E94DE -:10E6B000FA45CC840AE3E02E02E1F02E02E312E1F7 -:10E6C0002AE232E14EEF59E464E08AE092E10E94EE -:10E6D000EBD18C0180E090E00E94AD6017FD52C04C -:10E6E000A70162E372E18AE292E10E94A8CE409122 -:10E6F0003A1250913B1260913C1270913D1285EE9E -:10E700009FE00F9411CD40913E1250913F126091C5 -:10E7100040127091411289EE9FE00F9411CD40910B -:10E720002A1250912B1260912C1270912D128DEDA6 -:10E730009FE00F9411CD40912E1250912F126091B5 -:10E7400030127091311281EE9FE00F9411CD409103 -:10E75000321250913312609134127091351285ED5E -:10E760009FE00F9411CD4091361250913712609175 -:10E7700038127091391289ED9FE00F9411CD0E94EB -:10E780007EDF14C00E3FFFEF1F0729F4AE81BF816B -:10E790008C91823041F0B3E02B16310439F07101D5 -:10E7A00080CD8FEF01C08EEF9FEF01C0C80167964B -:10E7B0000FB6F894DEBF0FBECDBFDF91CF911F9192 -:10E7C0000F91FF90EF90DF90CF90BF90AF909F9010 -:10E7D0008F907F906F905F904F903F902F90089513 -:10E7E0000F931F93CF93DF930E94CD530EEF19E049 -:10E7F00080E090E0A0EAB0E4F80180839183A283F6 -:10E80000B383C2E6D2E020E030E040E752E4688122 -:10E8100079818A819B810F9476C00E9443D08DECD0 -:10E820009CECACE4BEE38093F6099093F709A093C7 -:10E83000F809B093F90983E393E3A3E7B0EC80937D -:10E84000FA099093FB09A093FC09B093FD096AEFC4 -:10E8500079E086EF99E00E94C54920E030E040E78A -:10E8600052E460915A0270915B0280915C02909137 -:10E870005D020F9476C00E9443D08AE999E9A9E12C -:10E88000BEE3F80180839183A283B38320E030E06C -:10E8900040E752E4688179818A819B810F9476C038 -:10E8A000DF91CF911F910F910C9443D02F923F9203 -:10E8B0004F925F926F927F928F929F92AF92BF9290 -:10E8C000CF92DF92EF92FF920F931F93CF93DF933C -:10E8D00000D0CDB7DEB780E00F94AB158A8380E01F -:10E8E0000F94B1158B830E94CD53E091460AF0E05E -:10E8F000EE0FFF1FEF53F84B85919491BE016F5FB0 -:10E900007F4F0F9448878981843010F083E089839A -:10E9100041E050E0698180E00F946448E091460A4C -:10E92000F0E0EE0FFF1FE354F84B859194910F94A4 -:10E93000FF5B80E090E0A0EAB0E48093FE09909352 -:10E94000FF09A093000AB093010A20E030E040E7FD -:10E9500052E460916202709163028091640290912E -:10E9600065020F9476C00E9443D0EEE1FAE48591EF -:10E970009591A591B4918093F6099093F709A0938E -:10E98000F809B093F909E2E2FAE485919591A5912D -:10E99000B4918093FA099093FB09A093FC09B0937A -:10E9A000FD096AEF79E086EF99E00E94C54920E011 -:10E9B00030E040E752E460915A0270915B0280912E -:10E9C0005C0290915D020F9476C00E9443D080E17A -:10E9D000E6EFF9E0A1ECB9E001900D928A95E1F73C -:10E9E00081E00F94AB1582E090E00E94784F80E0C8 -:10E9F0000F94AB1520E030E043E060E070E080E28F -:10EA000091EC0E940DE08091FE099091FF09A09188 -:10EA1000000AB091010A80930A1290930B12A093FE -:10EA20000C12B0930D1206E2E02E0AE4F02E02E082 -:10EA300010E0412C512C80EA682E80E4782E92E080 -:10EA4000892E27E0922E0E94CD534092FE095092CB -:10EA5000FF096092000A7092010A20E030E040E76E -:10EA600052E460916202709163028091640290911D -:10EA700065020F9476C00E9443D0F701859195916D -:10EA8000A591B4918093F6099093F709A093F809A2 -:10EA9000B093F909F701349685919591A591B491B8 -:10EAA0008093FA099093FB09A093FC09B093FD09A8 -:10EAB0006AEF79E086EF99E00E94C54920E030E0F6 -:10EAC00040E752E460915A0270915B0280915C02CF -:10EAD00090915D020F9476C00E9443D0A801698195 -:10EAE00080E00F946448E091460AF0E0EE0FFF1FCB -:10EAF000E354F84B859194910F94FF5B20E030E054 -:10EB000043E060E070E080E291EC0E940DE08FEF66 -:10EB1000800F63E00F9412C580FF03C0282D291BCE -:10EB2000922F392D282F2303F0011124E90FF11D15 -:10EB300097FDFA95EE0FFF1FEE0FFF1FE75FFD4EEB -:10EB40004091FE095091FF096091000A7091010AFD -:10EB5000418352836383748338E0E30EF11C0F5FBB -:10EB60001F4F0A30110509F06ECF80900A12909065 -:10EB70000B1260900C1270900D12E9E0EE2EE2E1A3 -:10EB8000FE2E1501260100E010E0F701E00FF11F55 -:10EB9000A180B280C380D4809501A601B401C301D5 -:10EBA0000F946FC087FD02C0450136019501A60193 -:10EBB000B101C2010F946FC087FF02C05101620111 -:10EBC0000C5F1F4F0C30110519F015012601DDCF28 -:10EBD0008CE1E80EF11CEDE5EE16E2E1FE0689F6A9 -:10EBE0009401A301B501C6010F9495BF20E030E068 -:10EBF00040E450E40F9472C2181654F069E0C62E37 -:10EC000062E1D62EA12C75ECE72E7FE0F72E12C024 -:10EC1000EBE6F9E484918F01882339F00E94D7D183 -:10EC20000F5F1F4FF8018491F7CF8AE00E94D7D180 -:10EC300080E048C000E010E0B12CB11002C0AA2072 -:10EC400039F120910A1230910B1240910C1250911F -:10EC50000D12F601E00FF11F6181728183819481B1 -:10EC60000F9495BF20E030E048EC52E40F9444C389 -:10EC700020E030E040E05FE30F9496BF0F944CC17A -:10EC80000F94DEC0C7010F9419CDF2E0EF0EF11C16 -:10EC9000B3940C5F1F4F23E0B212CFCFA3943CE19B -:10ECA000C30ED11CA212C6CF89E092E16CD581E0DF -:10ECB0008093091295DD8A810F94AB158B810F9497 -:10ECC000B11581E00F900F900F90DF91CF911F91C0 -:10ECD0000F91FF90EF90DF90CF90BF90AF909F90FB -:10ECE0008F907F906F905F904F903F902F900895FE -:10ECF0002F923F924F925F926F927F928F929F924C -:10ED0000AF92BF92CF92DF92EF92FF920F931F9339 -:10ED1000CF93DF93CDB7DEB729970FB6F894DEBF58 -:10ED20000FBECDBFD82EC62E3A010E94CD53D301BF -:10ED30001C9284ECEAE0F2E1DF011D928A95E9F78A -:10ED40000E942CDE8091F8119091F911A091FA1196 -:10ED5000B091FB118093521290935312A0935412CE -:10ED6000B09355128091001290910112A09102125D -:10ED7000B09103128093561290935712A093581299 -:10ED8000B09359128091FC119091FD11A091FE1148 -:10ED9000B091FF1180935A1290935B12A0935C1272 -:10EDA000B0935D128091041290910512A091061209 -:10EDB000B091071280935E1290935F12A09360123D -:10EDC000B09361128091E0119091E111A091E21154 -:10EDD000B091E3118093621290936312A093641236 -:10EDE000B09365128091E4119091E511A091E61124 -:10EDF000B091E7118093661290936712A093681206 -:10EE0000B09369120E949EDD80E00F94AB158E8353 -:10EE100080E00F94B1158F83E091460AF0E0EE0F89 -:10EE2000FF1FED5EF74B85919491BE016F5F7F4FA1 -:10EE30000F9448878981843010F083E08983EAE069 -:10EE40004E2EE2E15E2EFEEFEF2EF9E4FF2E22249D -:10EE50002394312CEC2DFF27E7FDF095F987E88707 -:10EE60000E94CD53A101698180E00F946448E09134 -:10EE7000460AF0E0EE0FFF1FE15FF74B859194919A -:10EE80000F94FF5B20E030E040EA50E42093FE095D -:10EE90003093FF094093000A5093010A80E00F94D9 -:10EEA000AB1580E00F94B11520E030E040E752E46C -:10EEB0006091620270916302809164029091650298 -:10EEC0000F9476C00E9443D0F701659175918591AA -:10EED000949187010C5F1F4FF80125913591459161 -:10EEE00054912A833B834C835D832091521230914D -:10EEF000531240915412509155120F9444C34B0138 -:10EF00005C0120915A1230915B1240915C12509139 -:10EF10005D126A817B818C819D810F9444C39B012A -:10EF2000AC01C501B4010F9496BF209162123091DB -:10EF3000631240916412509165120F9496BF6093D2 -:10EF4000F6097093F7098093F8099093F909F7018E -:10EF50006591759185919491F8012591359145912F -:10EF600054912A833B834C835D83209156123091C8 -:10EF7000571240915812509159120F9444C34B01AB -:10EF80005C0120915E1230915F12409160125091AD -:10EF900061126A817B818C819D810F9444C39B01A6 -:10EFA000AC01C501B4010F9496BF20916612309157 -:10EFB000671240916812509169120F9496BF4B01ED -:10EFC0005C0120E030E040E850EC0F946FC087FD1A -:10EFD00009C08092FA099092FB09A092FC09B092B4 -:10EFE000FD090CC080E090E0A0E8B0EC8093FA0945 -:10EFF0009093FB09A093FC09B093FD0920E030E059 -:10F0000040E752E460915A0270915B0280915C0289 -:10F0100090915D020F9476C00E9443D020E030E0D2 -:10F0200043E060E070E080E291EC0E940DE02DECA6 -:10F030003CEC4CEC5CE36091FE097091FF0980911F -:10F04000000A9091010A0F9495BF6093FE09709396 -:10F05000FF098093000A9093010A00E063E0B62E56 -:10F06000AA24AA94A20C31E03A152CF0888599853F -:10F070000E94F9EA0CC0DD2041F041E0D41253C0F7 -:10F080006C2D80E00E94BEE702C00E9465E58823E7 -:10F0900009F449C004304CF12091F6093091F70988 -:10F0A0004091F8095091F909D2016D917D918D91AE -:10F0B0009C910F9496BFF201608371838283938346 -:10F0C0002091FA093091FB094091FC095091FD090A -:10F0D00064817581868197810F9496BFD2011496C1 -:10F0E0006D937D938D939C93179720E030E040E8DB -:10F0F00050EC6091FA097091FB098091FC099091A4 -:10F10000FD090F946FC087FF0CC080E090E0A0E87D -:10F11000B0EC8093FA099093FB09A093FC09B0939B -:10F12000FD090F5F2DC099249A949B0CBB2009F414 -:10F13000DCC12DEC3CEC4CE45DE36091FE09709188 -:10F14000FF098091000A9091010A0F9495BF609386 -:10F15000FE097093FF098093000A9093010A80E0F2 -:10F160000F94AB1580E00F94B1156091620270911D -:10F17000630280916402909165020E9443D0B92C91 -:10F1800008300CF470CFBFEF2B1A3B0AE8E0EE0E0C -:10F19000F11CF8E04F0E511C25E02216310409F055 -:10F1A0005FCE0E94CD530AE012E120E030E040E85B -:10F1B0005EE3D8016D917D918D919C910F9444C334 -:10F1C000F80161937193819391938F01F2E10A3277 -:10F1D0001F0759F780E00F94AB1580E00F94B1152D -:10F1E00020E030E040E950EC60910E1270910F1277 -:10F1F00080911012909111120F946FC087FF04C07C -:10F20000D3018C9181608C9320E030E040E950EC98 -:10F210006091161270911712809118129091191224 -:10F220000F946FC087FF04C0F301808182608083E8 -:10F2300052E6E52E52E1F52E0AE512E122E532E131 -:10F240004EEF59E464E08AE092E10E94EBD18C0138 -:10F2500097FD39C1EEEFF9E465917591859194912F -:10F26000E2E0FAE4C590D590E590F4902091561232 -:10F270003091571240915812509159120F9444C333 -:10F280004B015C0120915E1230915F12409160123F -:10F2900050916112C701B6010F9444C39B01AC01A8 -:10F2A000C501B4010F9496BF209166123091671288 -:10F2B00040916812509169120F9496BF4B015C0106 -:10F2C00020E030E040E950E40F9496BF60932C0AB0 -:10F2D00070932D0A80932E0A90932F0A20E030E03D -:10F2E00040E950ECC501B4010F946FC087FF04C022 -:10F2F000D3018C9181608C93E6E0FAE4659175917D -:10F3000085919491EAE0FAE4C590D590E590F49067 -:10F310002091561230915712409158125091591223 -:10F320000F9444C34B015C0120915E1230915F1237 -:10F330004091601250916112C701B6010F9444C30D -:10F340009B01AC01C501B4010F9496BF20916612D8 -:10F350003091671240916812509169120F9496BFD4 -:10F360004B015C0120E030E040E950E40F9496BF8F -:10F370006093300A7093310A8093320A9093330A73 -:10F3800020E030E040E950ECC501B4010F946FC0BB -:10F3900087FF04C0F30180818260808342E652E1EE -:10F3A0006AE572E182E592E10E94A8CE4091621284 -:10F3B00050916312609164127091651285EE9FE026 -:10F3C0000F9411CD409166125091671260916812AE -:10F3D0007091691289EE9FE00F9411CD4091521205 -:10F3E0005091531260915412709155128DED9FE01F -:10F3F0000F9411CD409156125091571260915812AE -:10F400007091591281EE9FE00F9411CD40915A12E4 -:10F4100050915B1260915C1270915D1285ED9FE0DE -:10F420000F9411CD40915E1250915F126091601265 -:10F430007091611289ED9FE00F9411CD0E947EDFE3 -:10F4400080E00F94AB1580E00F94B11520E030E020 -:10F4500046E153E46091FE097091FF098091000A32 -:10F460009091010A0F9496BF6093FE097093FF0973 -:10F470008093000A9093010A20E030E040E752E4D4 -:10F4800060916202709163028091640290916502C2 -:10F490000F9476C00E9443D0E091460AF0E0EE0F50 -:10F4A000FF1FE55AF84B859194910F94EC93FED988 -:10F4B0008823E9F08E810F94AB158F810F94B115DD -:10F4C0000E94CD533AC0E8E8F9E484917F01882393 -:10F4D00041F00E94D7D1FFEFEF1AFF0AF7018491A4 -:10F4E000F6CF8AE00E94D7D102C00FEF1FEF0E9433 -:10F4F000CD5380E090E0A0EAB0E48093FE099093C1 -:10F50000FF09A093000AB093010A20E030E040E731 -:10F5100052E4609162027091630280916402909162 -:10F5200065020F9476C00E9443D00E9444DD8E8114 -:10F530000F94AB158F810F94B115C80129960FB6A2 -:10F54000F894DEBF0FBECDBFDF91CF911F910F9119 -:10F55000FF90EF90DF90CF90BF90AF909F908F90F3 -:10F560007F906F905F904F903F902F90089587EF1E -:10F570009FE00F94EDCC863E40F40E941E636EED3A -:10F5800071E188EF9FE00D94A8480895F0DF609145 -:10F59000DE117091DF11882777FD8095982F0F94E9 -:10F5A00011C19058209172183091731840917418BD -:10F5B000509175180F9476C00C94D0D06091DE11E4 -:10F5C0007091DF11882777FD8095982F0F9411C1D6 -:10F5D00020917218309173184091741850917518D9 -:10F5E0000F9476C00E94D0D01092DF111092DE11DD -:10F5F00008951092DF111092DE1108954F925F92DC -:10F600006F927F928F929F92AF92BF92CF92DF9232 -:10F61000EF92FF92CF93DF93CDB7DEB728970FB667 -:10F62000F894DEBF0FBECDBF89EE9FE00F94F5CCFE -:10F6300069837A838B839C8381EE9FE00F94F5CC62 -:10F640004B015C0189ED9FE00F94F5CC6B017C01CF -:10F65000EEEFF9E4259135914591549162E07AE419 -:10F66000FB0185919591A591B4918D839E83AF8384 -:10F67000B887C501B4010F9444C32B013C012D810F -:10F680003E814F815885C701B6010F9444C39B0149 -:10F69000AC01C301B2010F9496BF29813A814B811D -:10F6A0005C810F9496BF20E030E040E950E40F9475 -:10F6B00096BF60932C0A70932D0A80932E0A909324 -:10F6C0002F0AE6E0FAE42591359145915491EAE05C -:10F6D000FAE44590559065907490C501B4010F947B -:10F6E00044C34B015C01A3019201C701B6010F9411 -:10F6F00044C39B01AC01C501B4010F9496BF29819D -:10F700003A814B815C810F9496BF20E030E040E964 -:10F7100050E40F9496BF6093300A7093310A80933F -:10F72000320A9093330A28960FB6F894DEBF0FBEC4 -:10F73000CDBFDF91CF91FF90EF90DF90CF90BF9042 -:10F74000AF909F908F907F906F905F904F900895B3 -:10F75000FC01108220E030E040E050E0BC01620F8C -:10F76000731FFB01E40FF51F1182128213821482B2 -:10F770004C5F5F4F4C315105A1F7245E3F4F243C55 -:10F78000310551F708952F923F924F925F926F92F9 -:10F790007F928F929F92AF92BF92CF92DF92EF9221 -:10F7A000FF920F931F93CF93DF93CDB7DEB7609790 -:10F7B0000FB6F894DEBF0FBECDBF8B839D838B87C2 -:10F7C0009C8703E010E0EB85FC8581859285A3850D -:10F7D000B485818F928FA38FB48F85819681A78105 -:10F7E000B08585879687A787B08B22242394312CF8 -:10F7F000F3E02F16310409F491C0B101882777FD99 -:10F800008095982F0F9411C125E535E547E052E426 -:10F810000F9444C320E030E04CE052E40F9496BFD4 -:10F820006B017C0120E030E848E053E40F9495BF81 -:10F830002B013C0120E030E04EE653E4C701B60165 -:10F840000F9495BF4B015C0120E030E04CE052E4A6 -:10F85000C701B6010F9495BF6B017C019101220F86 -:10F86000331F220F331F8B859C85280F391F3A8346 -:10F870002983FC012181328143815481C301B2017A -:10F880000F9444C3A50194010F9444C320E039EFC1 -:10F8900040EA56E40F9476C06F83788789879A8709 -:10F8A000EB85FC852585368547855089C701B601DE -:10F8B0000F9444C3A50194010F9444C320E039EF91 -:10F8C00040E256EC0F9476C09B01AC016F817885C5 -:10F8D00089859A850F9496BF4B015C01EB85FC8569 -:10F8E000218D328D438D548DC701B6010F9444C3D1 -:10F8F000A30192010F9444C320E039EF40EA56E49B -:10F900000F9476C09B01AC01C501B4010F9496BF62 -:10F91000E981FA816183728383839483FFEF2F1AD5 -:10F920003F0A26E02216310409F062CF0150110986 -:10F930008B859C854C969C878B870115110509F05A -:10F9400042CF9B819F87ED81E88B27E030E03A83AF -:10F950002983EF85F88981AD92ADA3ADB4ADE755AC -:10F96000FF4FFC83EB8380839183A283B383EF8576 -:10F97000F889858D968DA78DB0A1EB5AFF4FFE8338 -:10F98000ED8380839183A283B383212C312C01E00A -:10F9900010E00330110509F48DC0B801882777FD08 -:10F9A0008095982F0F9411C12BEA3AEA42E052E475 -:10F9B0000F9444C320E030E040EC50E40F9496BF35 -:10F9C0006B017C0120E030E040ED52E40F9495BFE4 -:10F9D0002B013C0120E030E04AE453E4C701B601CA -:10F9E0000F9495BF4B015C0120E030E040EC50E407 -:10F9F000C701B6010F9495BF6B017C012F85388933 -:10FA0000220D331D38872F83EF85F88921813281BC -:10FA100043815481C301B2010F9444C3A5019401F1 -:10FA20000F9444C320E030E146E956E40F9476C0D9 -:10FA30006B877C878D879E87ED81FE812081318158 -:10FA400042815381C701B6010F9444C3A5019401BB -:10FA50000F9444C320E030E146E156EC0F9476C0A9 -:10FA60009B01AC016B857C858D859E850F9496BF2F -:10FA70004B015C01EB81FC8120813181428153810A -:10FA8000C701B6010F9444C3A30192010F9444C36C -:10FA900020E030E146E956E40F9476C09B01AC01CA -:10FAA000C501B4010F9496BFEF81F885658F768FFD -:10FAB000878F90A30F5F1F4FFCE12F0E311C063084 -:10FAC000110509F066CF29813A81215031093A8325 -:10FAD00029838F8598890496988B8F87232B09F02B -:10FAE00038CF60960FB6F894DEBF0FBECDBFDF9162 -:10FAF000CF911F910F91FF90EF90DF90CF90BF902B -:10FB0000AF909F908F907F906F905F904F903F90BD -:10FB10002F90089589E092E11BCE2F923F924F9251 -:10FB20005F926F927F928F929F92AF92BF92CF928D -:10FB3000DF92EF92FF920F931F93CF93DF93CDB796 -:10FB4000DEB7C155D1090FB6F894DEBF0FBECDBFE9 -:10FB50001C0178A36F8F4A012DAB0FAB2A96EFAE35 -:10FB60002A972E96ACAEBDAECEAEDFAE2E9734E069 -:10FB7000239F50011124FC01EA0DFB1D808191811E -:10FB8000A281B3818F8B988FA98FBA8FDA01AA0DCA -:10FB9000BB1DBEAFADAF4D905D906D907C90A3014D -:10FBA00092016F89788D898D9A8D0F9496BF2396D7 -:10FBB0006CAF7DAF8EAF9FAF2397B4E00B9F8001FA -:10FBC0001124F101E00FF11F208131814281538125 -:10FBD00029A33AA34BA35CA3A401400F511F259670 -:10FBE0005FAF4EAF2597DA01CD90DD90ED90FC90A0 -:10FBF000A701960169A17AA18BA19CA10F9496BF40 -:10FC000029966CAF7DAF8EAF9FAF29972A96EFAD47 -:10FC10002A97B4E0EB9FC0011124F101E80FF91F0E -:10FC200020813181428153812B8F3C8F4D8F5E8F9C -:10FC3000EF8DF8A1E80FF91F6081718182819381B6 -:10FC40000F9495BF6DA37EA38FA398A7AF8DB8A186 -:10FC50001C968D919D910D90BC91A02D62968CAFBC -:10FC60009DAFAEAFBFAF6297D1011C962D913D9174 -:10FC70004D915C911F9729A73AA74BA75CA777FAEC -:10FC8000709477F87094A701960150582B8B3C8B99 -:10FC90004D8B5E8BEF8DF8A1EA0DFB1D808191816C -:10FCA000A281B3818DA79EA7AFA7B8AB23962CAD39 -:10FCB0003DAD4EAD5FAD2397BC01CD010F9495BF17 -:10FCC0006B017C01EF8DF8A1E00FF11F20813181E4 -:10FCD0004281538129AB3AAB4BAB5CAB29962CAD3F -:10FCE0003DAD4EAD5FAD299769A97AA98BA99CA9B5 -:10FCF0000F9495BF4B015C01A7019601C301B201AE -:10FD00000F9444C369AF7AAF8BAF9CAFA501940148 -:10FD10006B897C898D899E890F9444C39B01AC01BA -:10FD200069AD7AAD8BAD9CAD0F9496BF69AF7AAFDC -:10FD30008BAF9CAFA5019401C301B2010F9444C3E2 -:10FD40004B015C01A70196016B897C898D899E8995 -:10FD50000F9444C39B01AC01C501B4010F9495BF3E -:10FD600029AD3AAD4BAD5CAD0F9409C06B017C0180 -:10FD700020E030E0A9010F946FC087FF0AC02BED8F -:10FD80003FE049EC50E4C701B6010F9496BF6B0108 -:10FD90007C01AC968FADAC97882351F02BED3FE002 -:10FDA00049EC50E4C701B6010F9495BF6B017C018B -:10FDB0002DA53EA54FA558A96F89788D898D9A8D5F -:10FDC0000F946FC081111FC029A93AA94BA95CA942 -:10FDD00069A17AA18BA19CA10F946FC0811113C05E -:10FDE00020E030E0A901C701B6010F946FC0811176 -:10FDF0000AC02BED3FE049EC50E4C701B6010F9477 -:10FE000096BF6B017C01AB962CAD3DAD4EAD5FADA9 -:10FE1000AB97C701B6010F9444C32DA13EA14FA1DA -:10FE200058A55F770F947FC24B015C012FE632E14A -:10FE300043E85AE30F946FC087FDD6C1C501B401F2 -:10FE40000F944CC10F94E3C07AA369A361157105A7 -:10FE500021F481E090E09AA389A3A9A1BAA1BD01F0 -:10FE600080E090E00F940FC14B015C019B01AC015D -:10FE7000C701B6010F9476C06F8B788F898F9A8FE8 -:10FE8000A50194016DA17EA18FA198A50F9476C0C4 -:10FE90006DA77EA78FA798AB29A53AA54BA55CA512 -:10FEA00062966CAD7DAD8EAD9FAD62970F9495BFA0 -:10FEB000A50194010F9476C069AB7AAB8BAB9CAB78 -:10FEC00020E030E040E05FE36F89788D898D9A8D86 -:10FED0000F9444C32F89388D498D5A8D0F9444C394 -:10FEE0009B01AC0160E070E080E89FE30F9495BF58 -:10FEF0006DA37EA38FA398A7CE010196FC012A963D -:10FF00002FAD2A97B4E02B9FE00DF11D11242B8D0E -:10FF10003C8D4D8D5E8D208331834283538329A593 -:10FF20003AA54BA55CA52D873E874F87588B1B8E26 -:10FF300022242394312CAC019DA984E0989F400D8C -:10FF4000511D11245EAB4DABA1E0B0E0AC0FBD1F65 -:10FF50003FA924E0329FA00DB11D1124B8AFAFAB73 -:10FF6000FAA7E9A7AE0144595F4F5A8B498BE9A123 -:10FF7000FAA12E163F0608F012C15B8D59310CF024 -:10FF800040C02DA13EA14FA158A56B897C898D89C8 -:10FF90009E890F9444C36B017C012F89388D498D54 -:10FFA0005A8DC301B2010F9444C3A70196010F9467 -:10FFB00096BF7B018C012DA13EA14FA158A5C30185 -:10FFC000B2010F9444C34B015C012F89388D498DD8 -:10FFD0005A8D6B897C898D899E890F9444C39B01BE -:10FFE000AC01C501B4010F9495BF2B013C018B8D71 -:10FFF0008F5F8B8FA701B8014B8B5C8B6D8B7E8BDA -:020000022000DC -:1000000066C0B10180E090E00F940FC12F89388D58 -:10001000498D5A8D0F9444C36B017C010F9473C0BA -:100020006B8B7C8B8D8B9E8BC701B6010F94F3C3BA -:100030004B015C01ADADBEADCD90DD90ED90FC907F -:10004000F7FAF094F7F8F0942596AEADBFAD25978A -:100050002D913D914D915C912B8F3C8F4D8F5E8FFB -:100060002B893C894D895E89C701B6010F9444C331 -:100070002B013C01A50194016B8D7C8D8D8D9E8D96 -:100080000F9444C39B01AC01C301B2010F9496BF0E -:100090002B013C01A5019401C701B6010F9444C393 -:1000A0006B017C012B893C894D895E896B8D7C8D30 -:1000B0008D8D9E8D0F9444C39B01AC01C701B60189 -:1000C0000F9495BF6B8B7C8B8D8B9E8B1B8EA301AE -:1000D000920123966CAD7DAD8EAD9FAD23970F94AD -:1000E00096BFEDA9FEA960837183828393832B89D8 -:1000F0003C894D895E8929966CAD7DAD8EAD9FADF5 -:1001000029970F9496BFAFA9B8AD6D937D938D934A -:100110009C9313972DA53EA54FA558A9E9A5FAA52F -:1001200060817181828193810F9496BFA9A5BAA540 -:100130006D937D938D939C93139729A93AA94BA90D -:100140005CA96D857E858F8598890F9496BF6D8794 -:100150007E878F87988BCE0101960E940159E98492 -:10016000FA840B851C852D813E814F8158856981DC -:100170007A818B819C81BA89BF93E989EF932E960E -:100180008CAC9DACAEACBFAC2E97DE011D966D0164 -:1001900051D6BFEF2B1A3B0A0F900F90E8CECF8CB1 -:1001A000D8A0FCE0CF0ED11CAF8DB8A11896ED9071 -:1001B000FD900D911C911B9714962D913D914D91A1 -:1001C0005C9117976D917D918D919C91FE01E45901 -:1001D000FF4FFF93EF932E968CAC9DACAEACBFACB3 -:1001E0002E9728D60F900F90CF5ADF4F0FB6F89466 -:1001F000DEBF0FBECDBFDF91CF911F910F91FF905A -:10020000EF90DF90CF90BF90AF909F908F907F90B6 -:100210006F905F904F903F902F900895CF93DF9312 -:100220001F92CDB7DEB71982AE014F5F5F4F682FC7 -:1002300085E70F94602189810F90DF91CF91089518 -:10024000CF93DF938091D712813319F080E090E053 -:1002500043C08091D6128139C9F782E0DFDFC82F11 -:1002600087E1DCDF8093CF1284E1D8DF8093CE1268 -:10027000C7FFECCF83E0D2DFD82F84E0CFDFC82FD9 -:1002800082E1CCDF282F30E0A90184E0440F551F24 -:100290008A95E1F744275F704D2B322F22272227C2 -:1002A0003F702C2B53FD505133FD30518091D212B1 -:1002B0009091D312840F951F9093D3128093D212F2 -:1002C0008091D0129091D112821B930B9093D112F6 -:1002D0008093D01281E090E0DF91CF910895CF9389 -:1002E0008091D712813319F080E090E022C0809194 -:1002F000D6128139C9F782E091DF87FFF5CF84E01C -:100300008DDFC82F82E18ADF282F30E0322F2227AD -:1003100022273F702C2B33FD30518091D0129091C9 -:10032000D112821B930B9093D1128093D01281E053 -:1003300090E0CF910895CF93DF931F92CDB7DEB7B2 -:100340006983AE014F5F5F4F682F85E70F94C5212A -:100350000F90DF91CF910895CF93DF93D82FC62FC1 -:1003600041EB65E184E10F945020D093D512C09306 -:10037000D41280E053DF8093D71281E04FDF809367 -:10038000D6129091D712913369F4813959F4609162 -:10039000D5128DE0D0DF6091D4128EE0CCDF81E009 -:1003A00090E002C080E090E0DF91CF9108959091BD -:1003B0001909911107C09091C00095FFFCCF80935F -:1003C000C6000895913031F49091C80095FFFCCF9C -:1003D0008093CE0008952F923F924F925F926F923A -:1003E0007F928F929F92AF92BF92CF92DF92EF92C5 -:1003F000FF920F931F93CF93DF93CDB7DEB768972C -:100400000FB6F894DEBF0FBECDBF1C01CB01BA0101 -:1004100028013901F101E45BFF4FC080D180E28007 -:10042000F380A70196010F9444C30F945CC00F940E -:10043000E3C04B015C01A7019601C301B2010F9417 -:1004400044C30F945CC00F94E3C008E78016910486 -:10045000A104B10428F4B8E78B2E912CA12CB12C67 -:10046000D101D796CD90DD90ED90FC90DA972401E4 -:100470003501C814D904EA04FB0410F4260137013D -:10048000683771058105910520F468E770E080E028 -:1004900090E069877A878B879C87C616D706E8061F -:1004A000F90620F4C986DA86EB86FC8691012D5B7D -:1004B0003F4FD9018D919D910D90BC91A02D8983C5 -:1004C0009A83AB83BC83892B8A2B8B2B41F401E06D -:1004D00010E020E030E009831A832B833C83A301E2 -:1004E0009201C301B2010F9403C56D877E878F8788 -:1004F000988BA7019601C701B6010F9403C54B0164 -:100500005C0129853A854B855C85CA01B9010F9448 -:1005100003C5698B7A8B8B8B9C8BE980FA800B816E -:100520001C81EE0CFF1C001F111FED82FE820F8349 -:100530001887C501B40161507109810991090D85C0 -:100540001E852F853889601B710B820B930BED8004 -:10055000FE800F8118856E0D7F1D801F911FA801E1 -:1005600097010F9446C569017A01C501B401098953 -:100570001A892B893C89601B710B820B930B2D818F -:100580003E814F8158850F9446C52C0D3D1D4E1D53 -:100590005F1DD10150968D909D90AD90BC9053976A -:1005A000281539054A055B0548F4D501C401821BAD -:1005B000930BA40BB50BAC01BD0194C029813A810A -:1005C0004B815C81E2E0220F331F441F551FEA95E7 -:1005D000D1F7D501C40181709927AA27BB278D8B3C -:1005E0009E8BAF8BB88F8501740116950795F79494 -:1005F000E794E982FA820B831C83E988FA880B89E5 -:100600001C898D859E85AF85B889E816F9060A078D -:100610001B0790F1BC01CD01609570958095909578 -:100620006E0D7F1D801F911F620F731F841F951F0A -:10063000ED88FE880F89188DEF28E02AE12A41F025 -:10064000ED80FE800F8118856E0D7F1D801F911F2C -:100650000F9446C569017A0109811A812B813C8179 -:10066000C00ED11EE21EF31E8C149D04AE04BF0406 -:10067000B0F57501640133C06D857E858F859889DD -:10068000E988FA880B891C896E197F09800B910B08 -:10069000ED88FE880F89188DEF28E02AE12A41F0C5 -:1006A000ED80FE800F8118856E0D7F1D801F911FCC -:1006B0000F9446C5E980FA800B811C812E0D3F1DE9 -:1006C000401F511F82169306A406B50610F4A5011B -:1006D000940175016401C21AD30AE40AF50A40E0E4 -:1006E00050E0BA018FB7F894F101E55BFF4F9081BC -:1006F000911120C0D1015A96CD92DD92ED92FC92DB -:100700005D97C40ED51EE61EF71EF101C68ED78E6C -:10071000E0A2F1A2DB964D925D926D927C92DE9703 -:10072000DF96E984FA840B851C85ED92FD920D938A -:100730001C9313978FBF68960FB6F894DEBF0FBE59 -:10074000CDBFDF91CF911F910F91FF90EF90DF9080 -:10075000CF90BF90AF909F908F907F906F905F9061 -:100760004F903F902F9008952F923F924F925F921B -:100770006F927F928F929F92AF92BF92CF92DF92B1 -:10078000EF92FF920F931F93CF93DF935C017090D2 -:10079000DD128091DE1287198F70833008F486C0D5 -:1007A0008091DE12811101C080E1815022E5829F9B -:1007B0008001112401521D4E811101C080E1FF24EE -:1007C000FA94F80E82E5F89EE0011124C152DD4E44 -:1007D000F71409F46DC09AA4CBA4DCA4EDA4292DD0 -:1007E0003C2D4D2D5E2D6EA17FA188A599A50F945E -:1007F0006FC0882309F44CC0F80126A037A040A49C -:1008000051A4A2019101692D7C2D8D2D9E2D0F9457 -:100810006FC018169CF5A2019101C201B1010F949D -:1008200044C31B012C018AA99BA9ACA9BDA9BC0189 -:10083000CD0190589B01AC010F9496BF2EA53FA50A -:1008400048A959A90F9444C39B01AC01C201B1014D -:100850000F9495BF0F94FDC3662E872E8C01262F13 -:10086000372FAC01692D7C2D8D2D9E2D0F946FC0DF -:1008700087FD04C0962CC82CD02EE12E892D9C2DEE -:10088000AD2DBE2D8EA39FA3A8A7B9A7F1E0FEAB07 -:100890008F2DF11001C080E1FF24FA94F80E22E5BB -:1008A000F29EC00111248E01EC0190CF823061F4E0 -:1008B00082E5789EE0011124C152DD4E81E0870D72 -:1008C000803141F480E006C0C091DE12C11186C0C3 -:1008D000C0E184C0782E92E5899F40011124F40183 -:1008E000E152FD4E4F0144244394CEA0DFA0E8A482 -:1008F000F9A4F40156A067A000A511A5252D362D59 -:10090000A801C701B6010F946FC087FF40C0A701BF -:100910009601C701B6010F9444C36B017C018AA9FB -:100920009BA9ACA9BDA9BC01CD0190589B01AC010C -:100930000F9496BF2EA53FA548A959A90F9444C36B -:100940009B01AC01C701B6010F9495BF0F94FDC385 -:100950006B017C019B01AC01652D762DC8010F94C4 -:100960006FC087FF03C0C52CD62C78019601A70164 -:10097000652D762DC8010F946FC0882341F0C60104 -:10098000D701F40186A397A3A0A7B1A746AAF401B3 -:1009900086A9811103C08EA9882361F0F40106A104 -:1009A00017A120A531A54EA15FA168A579A5CE010B -:1009B00012DD1EAA81E0870D803109F480E0782ED7 -:1009C000F2E58F9FC001112481529D4E2091DE12CD -:1009D000721609F479CFE4014C0187CFC15022E5AA -:1009E000C202E0011124C152DD4EF50100811181E6 -:1009F000228133814EA15FA168A579A5CE01EBDCF0 -:100A00001EAADF91CF911F910F91FF90EF90DF9081 -:100A1000CF90BF90AF909F908F907F906F905F909E -:100A20004F903F902F9008951092DE121092DD1299 -:100A300080E1EAE1F8E1DF011D928A95E9F7109281 -:100A40000A1810920B1810920C1810920D18109290 -:100A50000E1810920F181092101810921118109270 -:100A60001218109213181092141810921518109250 -:100A70001618109217181092181810921918109230 -:100A80000618109207181092081810920918089565 -:100A9000CF92DF92EF92FF92CF93C091E0099091B5 -:100AA000DD128091DE12981781F08091DD1292E5BF -:100AB000899FF0011124EA5DFC4EC0819091DE1205 -:100AC000891719F08F5F8F70F9CFCC2321F1C09077 -:100AD000D812D090D912E090DA12F090DB12C11443 -:100AE000D104E104F10479F40F9498B7605E7C4F6F -:100AF0008F4F9F4F6093D8127093D9128093DA1260 -:100B00009093DB1211C00F9498B76C157D058E057C -:100B10009F0550F00AC01092D8121092D91210926C -:100B2000DA121092DB1201C0CFEF6C2F70E086E07A -:100B3000CF91FF90EF90DF90CF900D946BB84F92D4 -:100B40005F926F927F928F929F92AF92BF92CF925D -:100B5000DF92EF92FF920F931F9380916F008D7F32 -:100B600080936F0080E00F94F11D60931A187093CA -:100B70001B1880931C1890931D1881E00F94F11D91 -:100B800060931E1870931F1880932018909321185B -:100B900082E00F94F11D60932218709323188093C4 -:100BA00024189093251883E00F94F11D6093261864 -:100BB00070932718809328189093291880E00F9439 -:100BC000FF1D6093F6097093F7098093F8099093DD -:100BD000F90981E00F94FF1D6093FA097093FB09F6 -:100BE0008093FC099093FD0982E00F94FF1D6093B0 -:100BF000FE097093FF098093000A9093010A83E035 -:100C00000F94FF1D6093020A7093030A8093040AF5 -:100C10009093050A80910912882341F10091FA0905 -:100C20001091FB092091FC093091FD094091F609D2 -:100C30005091F7096091F8097091F90989E092E102 -:100C40000E940D479B01AC016091FE097091FF0964 -:100C50008091000A9091010A0F9495BF6093FE095C -:100C60007093FF098093000A9093010A0F941B1E52 -:100C700010910812112309F49AC010FF34C020917A -:100C8000E0113091E1114091E2115091E311609136 -:100C9000F6097091F7098091F8099091F9090F947C -:100CA00095BF6093F6097093F7098093F8099093C4 -:100CB000F9092091E4113091E5114091E61150912C -:100CC000E7116091FA097091FB098091FC099091FC -:100CD000FD090F9495BF6093FA097093FB09809307 -:100CE000FC099093FD0911FF62C08090F609909075 -:100CF000F709A090F809B090F909C090FA09D090CE -:100D0000FB09E090FC09F090FD092091F011309171 -:100D1000F1114091F2115091F311C501B4010F94FA -:100D200044C32B013C012091F4113091F511409105 -:100D3000F6115091F711C701B6010F9444C39B01FE -:100D4000AC01C301B2010F9496BF2B013C0120916D -:100D5000E8113091E9114091EA115091EB11C50170 -:100D6000B4010F9444C34B015C012091EC1130910C -:100D7000ED114091EE115091EF11C701B6010F94A2 -:100D800044C39B01AC01C501B4010F9496BF6093AD -:100D9000F6097093F7098093F8099093F909409246 -:100DA000FA095092FB096092FC097092FD0980E1FA -:100DB000E6EFF9E0A1ECB9E001900D928A95E1F738 -:100DC000109206181092071810920818109209181D -:100DD00010920A1810920B1810920C1810920D18FD -:100DE00010920E1810920F181092101810921118DD -:100DF00010921218109213181092141810921518BD -:100E0000109216181092171810921818109219189C -:100E100081E08093DC121F910F91FF90EF90DF90A3 -:100E2000CF90BF90AF909F908F907F906F905F908A -:100E30004F9008952F923F924F925F926F927F92C0 -:100E40008F929F92AF92BF92CF92DF92EF92FF92DA -:100E50000F931F93CF93DF93CDB7DEB7C656D1095B -:100E60000FB6F894DEBF0FBECDBF362E272E8FA350 -:100E70009BA729013A012396ECAEFDAE0EAF1FAF42 -:100E80002397D8AACFA68BAA2A969FAE2A972496F4 -:100E9000AFAE24972696BFAE26972091DE122F5F25 -:100EA00063962FAF6397203119F463961FAE639753 -:100EB0000091DD1210E063963FAD6397832F992771 -:100EC00087FD90950817190729F010910812111144 -:100ED00017C084C01092DC120F94112A80E00E9487 -:100EE000CF6080E00F943C848091DD1290E0801709 -:100EF000910791F38091DC1281110D944112E5CF9D -:100F000011FF4AC02091F8113091F9114091FA1166 -:100F10005091FB11632D722D8FA19BA50F9444C39B -:100F20006B017C012091FC113091FD114091FE116B -:100F30005091FF11C301B2010F9444C39B01AC0156 -:100F4000C701B6010F9496BF4B015C0120910412BA -:100F5000309105124091061250910712C301B2015F -:100F60000F9444C36B017C01209100123091011257 -:100F70004091021250910312632D722D8FA19BA5F7 -:100F80000F9444C3A70196010F9496BF2B013C0117 -:100F9000382C292CAFA2BBA610FF20C02091E01155 -:100FA0003091E1114091E2115091E311632D722DC6 -:100FB0008FA19BA50F9496BF362E272E8FA39BA79C -:100FC0002091E4113091E5114091E6115091E71123 -:100FD000C301B2010F9496BF2B013C0120916A1806 -:100FE00030916B1840916C1850916D18632D722DD3 -:100FF0008FA19BA50F9444C30F9414C3A3966CAF09 -:101000007DAF8EAF9FAFA39720916E1830916F1870 -:101010004091701850917118C301B2010F9444C3EC -:101020000F9414C3A7966CAF7DAF8EAF9FAFA797F9 -:10103000809109128823E9F093018201432D522DFA -:101040006FA17BA589E092E10E940D479B01AC0155 -:1010500023966CAD7DAD8EAD9FAD23970F9496BF5B -:10106000209172183091731840917418509175182E -:101070000EC02091721830917318409174185091DD -:10108000751823966CAD7DAD8EAD9FAD23970F94F3 -:1010900044C30F9414C367966CAF7DAF8EAF9FAF00 -:1010A0006797209176183091771840917818509171 -:1010B0007918AFA5B8A96D917D918D919C910F94F0 -:1010C00044C30F9414C323966CAF7DAF8EAF9FAF14 -:1010D00023978091261890912718A0912818B091F5 -:1010E000291823962CAD3DAD4EAD5FAD2397281743 -:1010F00039074A075B0709F49FC0E091E20934E031 -:10110000E39FF0011124ED58F64E20916E023091CC -:101110006F024091700250917102608171818281F1 -:1011200093810F946FC087FF28C023968CAD9DAD2F -:10113000AEADBFAD23978093261890932718A09348 -:101140002818B0932918E4E1FFE084918F018823E7 -:1011500031F02DD90F5F1F4FF8018491F8CFE7E9E7 -:10116000F8E405911491F8018491882321F01FD9A6 -:101170000F5F1F4FF8CF8AE01AD9809126189091FF -:101180002718A0912818B091291823962CAD3DADB1 -:101190004EAD5FAD2397281B390B4A0B5B0BCA0181 -:1011A000B90157FF07C090958095709561957F4F65 -:1011B0008F4F9F4F0F9411C16B017C0120E030E8ED -:1011C0004AEE53E460917618709177188091781800 -:1011D000909179180F9444C39B01AC01C701B601EB -:1011E0000F9472C2181644F523968CAD9DADAEAD2A -:1011F000BFAD23978093261890932718A0932818A3 -:10120000B0932918E4E1FFE084918F01882331F045 -:10121000CED80F5F1F4FF8018491F8CFE1E9F8E4D1 -:1012200005911491F8018491882321F0C0D80F5FB3 -:101230001F4FF8CF8AE0BBD88091DE12F2E58F9F76 -:1012400010011124910121523D4E1901F901E05B79 -:10125000FF4F118210823597108280911A18909159 -:101260001B18A0911C18B0911D188BA79CA7ADA7A7 -:10127000BEA7A3968CAC9DACAEACBFACA397881AAE -:10128000990AAA0ABB0AB7FE08C0B094A094909429 -:101290008094811C911CA11CB11CD1018D929D9246 -:1012A000AD92BC92139720911E1830911F18409157 -:1012B0002018509121182FA738AB49AB5AABA796ED -:1012C0008CAD9DADAEADBFADA797821B930BA40BAC -:1012D000B50B8FA398A7A9A7BAA7B7FF0BC0B09566 -:1012E000A095909581959F4FAF4FBF4F8FA398A723 -:1012F000A9A7BAA72FA138A549A55AA5D101149627 -:101300002D933D934D935C93179720912218309124 -:10131000231840912418509125182FAB38AF49AFAE -:101320005AAF67964CAC5DAC6EAC7FAC6797421A17 -:10133000530A640A750A77FE08C07094609450944A -:101340004094411C511C611C711CD10118964D9296 -:101350005D926D927C921B972091261830912718F0 -:1013600040912818509129182BAF3CAF4DAF5EAF7C -:101370002396CCACDDACEEACFFAC2397C21AD30AFB -:10138000E40AF50AF7FE08C0F094E094D094C09403 -:10139000C11CD11CE11CF11CD1011C96CD92DD9227 -:1013A000ED92FC921F97E091E209B4E0EB9FF0010F -:1013B0001124EE5BFD4F2081318142815381619682 -:1013C0002CAF3DAF4EAF5FAF619720E030E040E81B -:1013D0005FE361966CAD7DAD8EAD9FAD61970F946F -:1013E0006FC08823A9F0C701B6010F9411C161969F -:1013F0002CAD3DAD4EAD5FAD61970F9444C30F94DE -:10140000DEC0D1011C966D937D938D939C931F97A5 -:10141000A0915602B0915702A436B105A1F0F10196 -:1014200024853585468557850F94A9C524E630E087 -:1014300040E050E00F9468C5D1011C962D933D9378 -:101440004D935C931F97F10144855585668577859B -:101450008FA198A5A9A5BAA584179507A607B707D0 -:1014600014F4DB01CA0184159505A605B70514F42B -:10147000D301C201B501A40188169906AA06BB06CC -:1014800014F4AC01BD01D10150964D935D936D9361 -:101490007C935397463051056105710508F4F1C7F7 -:1014A000F101E95BFF4F8091E0099091E109AA27E2 -:1014B00097FDA095BA2F80839183A283B383A396CF -:1014C0002CAD3DAD4EAD5FADA3978BA59CA5ADA555 -:1014D000BEA5281739074A075B0724F0D1015896A3 -:1014E0001C9203C081E0F101808FA7962CAD3DAD29 -:1014F0004EAD5FADA7978FA598A9A9A9BAA928173E -:1015000039074A075B073CF4D10158968C915897EC -:10151000826058968C9367962CAD3DAD4EAD5FAD15 -:1015200067978FA998ADA9ADBAAD281739074A07B3 -:101530005B073CF4D10158968C915897846058967B -:101540008C9323962CAD3DAD4EAD5FAD23978BAD07 -:101550009CADADADBEAD281739074A075B073CF41B -:10156000D10158968C915897886058968C93EE9636 -:10157000EEADFFADEE978081D10159968C9389280D -:101580008A288B2809F01798F10184819581A6811A -:10159000B781892B8A2B8B2B09F01698F101808556 -:1015A0009185A285B385892B8A2B8B2B09F0159801 -:1015B000F10184859585A685B785892B8A2B8B2B90 -:1015C00081F18091FF17882319F081508093FF17D4 -:1015D00080910018882319F0815080930018809121 -:1015E0000118882319F0815080930118EE96AEAD52 -:1015F000BFADEE978C91813061F030F0823089F48C -:1016000080E28093011808C0149880E28093FF174D -:1016100008C080E2809300188091FF17811101C0FB -:10162000149AD1011C962D913D914D915C911F977B -:1016300061962CAF3DAF4EAF5FAF6197232B242B4C -:10164000252B49F5B0913A18BFA3E0913B18EBA7C1 -:1016500010913C1800913D182B2F3E2F412F502FF9 -:101660006BA92A967FAD2A9724968FAD249726964C -:101670009FAD26970F946FC087FD1AC0FBA9FFA3EB -:101680002A962FAD2A972BA724961FAD249726962E -:101690000FAD26970DC0309156183FA340915718B3 -:1016A0004BA71091581800915918232F342FD6CFDB -:1016B00080911A1890911B18A0911C18B0911D18B8 -:1016C000A3962CAD3DAD4EAD5FADA397281B390B56 -:1016D0004A0B5B0BCA01B9010F9411C120916A1822 -:1016E00030916B1840916C1850916D180F9476C022 -:1016F0006BAB7CAB8DAB9EAB698B7A8B8B8B9C8BF6 -:10170000A7966CAD7DAD8EAD9FADA7972FA538A9DF -:1017100049A95AA9621B730B840B950B0F9411C135 -:1017200020916E1830916F18409170185091711877 -:101730000F9476C04B015C016D8B7E8B8F8B988FE5 -:1017400067966CAD7DAD8EAD9FAD67972FA938AD17 -:1017500049AD5AAD621B730B840B950B0F9411C1ED -:101760002091721830917318409174185091751827 -:101770000F9476C06B017C01698F7A8F8B8F9C8F61 -:1017800023966CAD7DAD8EAD9FAD23972BAD3CAD5B -:101790004DAD5EAD621B730B840B950B0F9411C1A5 -:1017A00020917618309177184091781850917918D7 -:1017B0000F9476C0E091E20934E0E39FF001112438 -:1017C000EE5BFD4F20813181428153810F9444C3F0 -:1017D0002B013C016091560270915702882777FDDA -:1017E0008095982F0F9411C19B01AC01C301B201E8 -:1017F0000F9444C320E030E048EC52E40F9476C0EC -:101800006D8F7E8F8F8F98A3D1012D913D914D913A -:101810005C9113972BAF3CAF4DAF5EAF26303105D7 -:101820004105510504F514964D905D906D907C90A6 -:101830001797B6E04B16510461047104A4F4F1014A -:101840004084518462847384F6E04F16510461042D -:1018500071044CF4DC01CB01BF77F10186A797A797 -:10186000A0ABB1AB27C06BA97CA98DA99EA90F9491 -:101870003BC42B013C01C501B4010F943BC49B0147 -:10188000AC01C301B2010F9496BF4B015C01C701CB -:10189000B6010F943BC49B01AC01C501B4010F9488 -:1018A00096BF0F94FDC3D1019E966D937D938D934A -:1018B0009C93D197D1019E962D913D914D915C9134 -:1018C000D1972D962CAF3DAF4EAF5FAF2D9760E017 -:1018D00070E080E89FE30F9476C09B01AC016FA19C -:1018E0007BA5812F902F0F9444C34B015C01109175 -:1018F000DE128091DD12181B1F70E12FF0E025969B -:10190000FFAFEEAF2597CF010297069708F03FC0D3 -:10191000A501940160E074E284E799E40F9476C035 -:101920000F9414C36B017C0180918A1890918B18DD -:10193000A0918C18B0918D18C816D906EA06FB063E -:1019400030F5BC01CD016C197D098E099F09660F28 -:10195000771F881F991F212F30E040E050E00F943F -:1019600046C5CA01B9010F940FC10F9414C36C0D81 -:101970007D1D8E1D9F1D0F940FC19B01AC0160E06A -:1019800074E284E799E40F9476C04B015C01A501F1 -:1019900094012D966CAD7DAD8EAD9FAD2D970F94BE -:1019A00044C36BAB7CAB8DAB9EABD10192966D9378 -:1019B0007D938D939C93959750966D917D918D918C -:1019C0009C9153970F940FC16FA378A789A79AA7EB -:1019D000A50194010F9444C30F945CC00F94E3C01D -:1019E00029966CAF7DAF8EAF9FAF2997F10167ABA2 -:1019F00070AF81AF92AFF091D7196296FFAF629747 -:101A00009E012F5E3F4F6F963FAF2EAF6F974AE715 -:101A100058E16D965FAF4EAF6D97CE010196699616 -:101A20009FAF8EAF699718AE1FAA1BA61FA600E82E -:101A30001FE36F96AEADBFAD6F976D917D918D91A8 -:101A40009D916F96BFAFAEAF6F97A50194010F94B4 -:101A500044C36996EEADFFAD69976193719381932D -:101A600091936996FFAFEEAF69976D96AEADBFAD3E -:101A70006D97CD90DD90ED90FD906D96BFAFAEAFC0 -:101A80006D976296BFAD6297B13051F4EFA9F8AD92 -:101A9000329734F4C12CD12C2CE2E22E23E4F22E26 -:101AA0002B013C01E89477F8A7019601C301B2012C -:101AB0000F9472C21816CCF4A3019201C701B601AB -:101AC0000F9476C0C62EF72EE82ED92E262F372F4C -:101AD000482F592F6BA57FA5C8010F946FC087FDB4 -:101AE00004C0CBA6FFA60E2D1D2D2FA938AD2F5F4C -:101AF0003F4F38AF2FAB2430310509F09ACF20E0AB -:101B000030E040E85FE36BA57FA5C8010F946FC08C -:101B100087FF3FC06E0131E1C30ED11CAE014F5FA4 -:101B20005F4F7A012BA53FA5A801D7016D917D914B -:101B30008D919C910F9444C3F701619371938193AC -:101B400091937F01EC15FD0569F72BA53FA5A80131 -:101B50006BA97CA98DA99EA90F9444C3D10192962B -:101B60006D937D938D939C93959729966CAD7DADE8 -:101B70008EAD9FAD29970F940FC12BA53FA5A8014E -:101B80000F9444C30F94E3C0F10167AB70AF81AF12 -:101B900092AF2D962CAD3DAD4EAD5FAD2D976FA1A3 -:101BA00078A589A59AA50F9476C06B017C012BAD11 -:101BB0003CAD4DAD5EAD232B242B252B59F5F1010A -:101BC00084819581A681B781892B8A2B8B2B11F576 -:101BD00080859185A285B385892B8A2B8B2BD1F4A7 -:101BE00020914E1830914F18409150185091511833 -:101BF000C701B6010F9444C30F945CC081010D5B13 -:101C00001F4F0F94E3C0D8016D937D938D939C93E8 -:101C100013975BC12091521830915318409154187A -:101C200050915518C701B6010F9444C30F945CC07E -:101C30000F94E3C081010D5B1F4FF8016083718336 -:101C4000828393836296FFAD6297F13009F057C0AB -:101C50000F940FC14B015C016BAD7CAD8DAD9EADA2 -:101C60000F9411C19B01AC01C501B4010F9444C391 -:101C70002FA138A549A55AA50F9476C020E030E4DD -:101C80004FEF56EC0F9472C218164CF480E690E8B1 -:101C9000AFEFBFEFF80180839183A283B38381010B -:101CA0000D5B1F4FD8016D917D918D919C910F948B -:101CB0000FC14B015C01F1016481758186819781BF -:101CC0000F9411C19B01AC01C501B4010F9444C331 -:101CD0002FA138A549A55AA50F9476C020E030E47D -:101CE0004FEF56EC0F9472C218164CF480E690E851 -:101CF000AFEFBFEFF80180839183A283B38340905D -:101D00002A1850902B1860902C1870902D18810173 -:101D10000D5B1F4FD8016D917D918D919C910F941A -:101D20000FC14B015C016BAD7CAD8DAD9EAD0F94D1 -:101D300011C19B01AC01C501B4010F9444C32FA193 -:101D400038A549A55AA50F9476C04B015C01C30183 -:101D5000B2010F940FC19B01AC01C501B4010F94F6 -:101D600072C218162CF4F80140825182628273828A -:101D700040902E1850902F186090301870903118A5 -:101D8000D8016D917D918D919C910F940FC14B0164 -:101D90005C01F10164817581868197810F9411C185 -:101DA0009B01AC01C501B4010F9444C32FA138A518 -:101DB00049A55AA50F9476C04B015C01C301B2013D -:101DC0000F940FC19B01AC01C501B4010F9472C205 -:101DD000181634F4D8014D925D926D927C9213974F -:101DE0004090361850903718609038187090391815 -:101DF00081010D5B1F4FF8016081718182819381A8 -:101E00000F940FC14B015C0161966CAD7DAD8EAD41 -:101E10009FAD61970F9411C19B01AC01C501B40145 -:101E20000F9444C32FA138A549A55AA50F9476C095 -:101E30004B015C01C301B2010F940FC19B01AC01C6 -:101E4000C501B4010F9472C2181634F4D8014D9232 -:101E50005D926D927C921397409032185090331897 -:101E60006090341870903518F8016081718182811A -:101E700093810F940FC14B015C01D10118966D91B4 -:101E80007D918D919C911B970F9411C19B01AC0189 -:101E9000C501B4010F9444C32FA138A549A55AA583 -:101EA0000F9476C04B015C01C301B2010F940FC1C6 -:101EB0009B01AC01C501B4010F9472C218162CF439 -:101EC000F8014082518262827382F101ED5BFF4F23 -:101ED00060817181828193810F940FC14B015C01FC -:101EE000A70196010F9476C061966CAF7DAF8EAF5F -:101EF0009FAF6197D101D2966D937D938D939C9303 -:101F0000D5972DEB37E346E051E4C501B4010F94BA -:101F100044C30F94DEC0F101648B758B868B978B65 -:101F2000F2A1FFA7D1019396BC91BFABF101F4A13F -:101F3000FBAFD1019596BC91BBABFE017196FEA3A0 -:101F4000EDA32EE338E13CA72BA7AE014F5F5F4F17 -:101F500058A74FA35FA46FA87BAC1B2F00E0AFA1D5 -:101F6000B8A58D909D90AD90BD90B8A7AFA3E89413 -:101F7000B7F8EBA5FCA5C190D190E190F190FCA73A -:101F8000EBA7A7019601C501B4010F9472C2181600 -:101F9000B4F5002379F1252D362D472D512FC5019C -:101FA000B4010F9444C34B015C012FA53FA94BAD75 -:101FB0005BA9C701B6010F9444C36B017C019B016F -:101FC000AC01C501B4010F9472C21816C4F4A50186 -:101FD0009401C701B6010F9476C09B01AC01652D39 -:101FE000762D872D912F0F9444C3562E672E782E71 -:101FF000192F05C05C2C6D2C7E2C1F2D01E02FA10C -:1020000038A54DA15EA12417350709F0A8CF852D6D -:10201000962DA72DB12F89A39AA3ABA3BCA3259678 -:102020008EAD9FAD259702970CF459C1909106187B -:102030009FA3A0910718ABA7009108181091091849 -:1020400027E137EB41ED58E3692F7A2FC8010F9450 -:1020500072C218160CF043C1B1E06296BFAF62972E -:102060002FA53FA94BAD5BA96FA17BA5C8010F941C -:1020700072C218169CF062961FAE62972FA53FA9F8 -:102080004BAD5BA96FA17BA5C8010F9476C06B9681 -:102090006CAF7DAF8EAF9FAF6B9715C02FA13BA5E7 -:1020A000A8016FA57FA98BAD9BA90F9476C06B96F5 -:1020B0006CAF7DAF8EAF9FAF6B97EFA5EFA3FFA97E -:1020C000FBA70BAD1BA92AE038E127963FAF2EAF47 -:1020D00027974EE358E16D965FAF4EAF6D97CE01F7 -:1020E00001966F969FAF8EAF6F97412C512C80E871 -:1020F000682E8FE3782E24961FAE24972796AEADD8 -:10210000BFAD27978D909D90AD90BD902796BFAFA6 -:10211000AEAF27976F96EEADFFAD6F97C190D190A0 -:10212000E190F1906F96FFAFEEAF6F976296FFADC3 -:102130006297FF2361F06B962CAD3DAD4EAD5FAD68 -:102140006B97C501B4010F9444C34B015C01249605 -:102150002FAD2497222381F0A3019201C501B40180 -:102160000F9444C34B015C01A3019201C701B60166 -:102170000F9444C36B017C01A7019601C501B40112 -:102180000F9472C220E030E0A9011816CCF4C70108 -:10219000B6010F9472C218164CF020E030E0A9018D -:1021A000C501B4010F946FC087FF05C0A701960158 -:1021B000C501B40118C0F7FAF094F7F8F0941CC008 -:1021C000C701B6010F946FC087FD09C020E030E061 -:1021D000A901C501B4010F9472C218164CF4A501EF -:1021E0009401C701B6010F9495BF6B017C010EC02D -:1021F000B7FAB094B7F8B094A7019601C501B4013D -:102200000F9472C2181614F4750164016D96AEAD88 -:10221000BFAD6D978D909D90AD90BD906D96BFAF09 -:10222000AEAF6D97A5019401C701B6010F9472C2BC -:10223000181694F4A7019601C501B4010F9476C055 -:102240009B01AC01C301B2010F9444C32B013C01BB -:10225000B1E02496BFAF24972796EEADFFAD279748 -:10226000EA51F84109F04ACF24963FAD2497332331 -:1022700051F0A30192016FA17BA5C8010F9444C343 -:102280006FA37BA78C0124EA30E74DE75FE36FA1E2 -:102290007BA5C8010F9444C36B017C019B01AC0179 -:1022A000609102187091031880910418909105189C -:1022B0000F9472C21816CCF489A0BAA0ABA09CA04F -:1022C000A7019601682D7B2D8A2D992D0F9472C23E -:1022D00018165CF48FA2BBA60A2D192D06C049A1C1 -:1022E0004FA35AA15BA70BA11CA18FA19BA5D8014D -:1022F000F10182A793A7A4A7B5A7C9A0DAA0EBA074 -:10230000FCA0A7019601C701B6010F9444C34B017D -:102310005C0161966CAD7DAD8EAD9FAD61979058BF -:102320009B01AC010F9496BF2D962CAD3DAD4EADEB -:102330005FAD2D970F9444C39B01AC01C501B4015F -:102340000F9495BF0F94FDC3862EB72EA82E992EFD -:10235000262F372F482F592F6FA17BA5C8010F9427 -:102360006FC087FF04C08FA0BBA4A02E912E882D24 -:102370009B2DAA2DB92DF10186A397A3A0A7B1A7E4 -:1023800081E086AB80E1FE013196AAE0B8E10190E0 -:102390000D928A95E1F78FA59FA9ABADBBA980935C -:1023A000061890930718A0930818B0930918C092C4 -:1023B0000218D0920318E0920418F09205188101D7 -:1023C000045B1F4FD101D7966D917D918D919C91AA -:1023D000DA970F940FC12FA53FA94BAD5BA90F94BE -:1023E00076C0F801608371838283938397018601AD -:1023F000482D5B2D6A2D792DC1010F94EB01639659 -:10240000FFAD6397F093DE12A3962CAD3DAD4EADBC -:102410005FADA39720931A1830931B1840931C1894 -:1024200050931D18A7968CAD9DADAEADBFADA797CF -:1024300080931E1890931F18A0932018B093211812 -:1024400067962CAD3DAD4EAD5FAD679720932218DA -:1024500030932318409324185093251823968CAD5D -:102460009DADAEADBFAD23978093261890932718EE -:10247000A0932818B0932918CE0181960F94B40325 -:1024800078D3CA59DF4F0FB6F894DEBF0FBECDBF69 -:10249000DF91CF911F910F91FF90EF90DF90CF9040 -:1024A000BF90AF909F908F907F906F905F904F9074 -:1024B0003F902F9008952F923F924F925F926F928C -:1024C0007F928F929F92AF92BF92CF92DF92EF92C4 -:1024D000FF920F931F93CF93DF93CDB7DEB727976C -:1024E0000FB6F894DEBF0FBECDBF362E7F838B8331 -:1024F000292E49015A0127013801DA82C9828091C7 -:102500000812882309F463C02091F8113091F91161 -:102510004091FA115091FB118B810F9444C36B01D0 -:102520007C012091FC113091FD114091FE115091E0 -:10253000FF11C501B4010F9444C39B01AC01C70155 -:10254000B6010F9496BF2091E0113091E1114091B6 -:10255000E2115091E3110F9496BFF62EE72ED82E7C -:10256000C92E209100123091011240910212509117 -:102570000312632D7F818B81922D0F9444C36B8353 -:102580007C838D839E8320910412309105124091AB -:10259000061250910712C501B4010F9444C39B0168 -:1025A000AC016B817C818D819E810F9496BF2091BF -:1025B000E4113091E5114091E6115091E7110F942B -:1025C00096BF4B015C013F2CEF82DB822C2C2091CB -:1025D0006A1830916B1840916C1850916D18632DEA -:1025E0007F818B81922D0F9444C30F9414C3609309 -:1025F0001A1870931B1880931C1890931D18209123 -:102600006E1830916F184091701850917118C50173 -:10261000B4010F9444C30F9414C360931E187093B5 -:102620001F188093201890932118809109128823F5 -:10263000C9F095018401432D5F816B81722D89E082 -:1026400092E10E940D479B01AC01C301B2010F94BE -:1026500096BF209172183091731840917418509160 -:1026600075180AC02091721830917318409174182F -:1026700050917518C301B2010F9444C30F9414C351 -:102680006093221870932318809324189093251830 -:1026900020917618309177184091781850917918D8 -:1026A000E981FA8160817181828193810F9444C3B1 -:1026B0000F9414C3609326187093271880932818DA -:1026C0009093291826E238E142E258E16EE178E180 -:1026D0008AE198E10F94A41D109206181092071831 -:1026E000109208181092091810920A1810920B18DC -:1026F00010920C1810920D1810920E1810920F18BC -:10270000109210181092111810921218109213189B -:10271000109214181092151810921618109217187B -:10272000109218181092191827960FB6F894DEBF59 -:102730000FBECDBFDF91CF911F910F91FF90EF9012 -:10274000DF90CF90BF90AF909F908F907F906F90D1 -:102750005F904F903F902F90089520917218309184 -:1027600073184091741850917518FC016081718143 -:10277000828193810F9444C30F9414C360932218F1 -:1027800070932318809324189093251826E238E13B -:1027900042E258E16EE178E18AE198E10D94A41DEE -:1027A00020917618309177184091781850917918C7 -:1027B000FC0160817181828193810F9444C30F94E5 -:1027C00014C3609326187093271880932818909349 -:1027D000291886E298E10D94E01D60936E027093D3 -:1027E0006F0280937002909371020895CF92DF92EE -:1027F000EF92FF920F931F93CF93DF9300D01F921E -:10280000CDB7DEB74AE5C42E48E1D42E5AE6E52E10 -:1028100058E1F52E0AE218E1F6016191719181917A -:1028200091916F01F70121913191419151917F0176 -:1028300029833A834B835C830F940FC129813A81AA -:102840004B815C810F9444C30F94E3C0F801619302 -:102850007193819391938F01FAE6CF16F8E1DF0629 -:10286000D9F60F900F900F900F90DF91CF911F919D -:102870000F91FF90EF90DF90CF9008958091DE123E -:102880009091DD12891B8F7008953091DE12209196 -:10289000DD12321791F0E091DE12E11101C0E0E1AA -:1028A000E15022E5E202F0011124E15DFC4E2081BD -:1028B0003181280F391F3183208308955091DE1212 -:1028C0004091DD1280E090E062E5541761F0649F72 -:1028D000F0011124E15DFC4E20813181820F931FB4 -:1028E0004F5F4F70F2CF089590911909911107C071 -:1028F0009091C00095FFFCCF8093C6000895913061 -:1029000031F49091C80095FFFCCF8093CE000895DC -:10291000CF93DF931F921F92CDB7DEB78091190935 -:10292000811128C08091C00087FF4DC08091C000F8 -:1029300084FF04C08091C6008A8345C06091C600B0 -:102940002091150930911609C90101968F779927B1 -:1029500040911709509118098417950741F0F90122 -:10296000EB56F74F60839093160980931509609397 -:10297000CE0029C0813039F58091C80087FF23C07F -:102980008091C80084FF04C08091CE0089831BC061 -:102990006091CE002091150930911609C901019668 -:1029A0008F77992740911709509118098417950737 -:1029B00041F0F901EB56F74F60839093160980932D -:1029C00015096093C6000F900F90DF91CF91089585 -:1029D0000F931F93CF93DF938091A918811109C0A2 -:1029E0008091A818811105C08091A718882309F447 -:1029F00095C0E4E1FFE08491EF01882329F074DFC2 -:102A00002196FE018491F9CFC5EAD8E4FE01059133 -:102A10001491F8018491882321F066DF0F5F1F4F26 -:102A2000F8CF8091A918882319F16091AA187091A4 -:102A3000AB188091AC189091AD180F9411C12091F2 -:102A40006A1830916B1840916C1850916D180F9462 -:102A500076C0AB01BC0184E79AE40E94F04AFE0113 -:102A60008591949162E77AE40E9438CE0F94B2493E -:102A70008091A818882319F16091AE187091AF1851 -:102A80008091B0189091B1180F9411C120916E18D7 -:102A900030916F1840917018509171180F9476C052 -:102AA000AB01BC018EE69AE40E94F04AFE018591DA -:102AB00094916CE67AE40E9438CE0F94B2498091EA -:102AC000A718882319F16091B2187091B3188091FA -:102AD000B4189091B5180F9411C1209172183091CB -:102AE000731840917418509175180F9476C0AB010B -:102AF000BC0188E69AE40E94F04AFE018591949117 -:102B000066E67AE40E9438CE0F94B2498AE0ECDEA1 -:102B10001092A9181092A8181092A718DF91CF91BF -:102B20001F910F9108958091A918811107C080917C -:102B3000A818811103C08091A71801C081E01092EC -:102B4000A9181092A8181092A71808958091A71894 -:102B50001092A71808959091760280937602892F9B -:102B600008959091A0188093A0181092A718892F0B -:102B70000895EFE6F0E080818260808308950F93EE -:102B80001F93CF93DF938091DF189091E018892BEA -:102B900009F085C19091DE128091DD12981771F0D5 -:102BA0008091DD1222E5829FC001112481529D4E49 -:102BB000FC01E55BFF4F21E0208302C080E090E054 -:102BC0009093E0188093DF18009709F462C1109287 -:102BD000E2181092E1180E94C9CD1092BC18109210 -:102BE000BD181092BE181092BF18E091DF18F09136 -:102BF000E01867A970AD61348CE9780728F4613278 -:102C0000EEE47E0748F002C060E47CE976956795C3 -:102C10007695679584E007C06131F7E27F0730F071 -:102C20007695679582E08093B91808C081E080931B -:102C3000B9186032710510F460E270E08B01005247 -:102C40001109011528E01207D0F0812F9927880F6C -:102C5000991F880F991F8858914BFC013296459116 -:102C60005491AA27059F9001049F210D3A1F0694B5 -:102C70002A1F3A1F1124FC01859194911DC0C8019F -:102C8000969587958C7F8858954BFC01459154917A -:102C90000296FC0185919491B80167707727869F11 -:102CA0009001879F300D969F300D1124B3E036952B -:102CB0002795BA95E1F7CA01821B930B84369105DB -:102CC00090F4E3E2F6E4C591D4918991882311F060 -:102CD0000BDEFBCF4AE050E0B80184E998E00E94A7 -:102CE0005F4584E690E09093B8188093B718809180 -:102CF000B9188093B618E091DF18F091E01863AD31 -:102D000074AD7093BB186093BA1861348CE978077E -:102D100028F46132EEE47E0748F002C060E47CE90A -:102D2000769567957695679584E007C06131F7E2FF -:102D30007F0730F07695679582E08093B91808C0D8 -:102D400081E08093B9186032710510F460E270E0A0 -:102D50008B0100521109011528E01207E0F0812FC4 -:102D60009927880F991F880F991F8858914BFC014C -:102D7000329625913491AA27039FA001029F410D0D -:102D80005A1F06944A1F5A1F1124FC0125913491A1 -:102D9000241B350B1EC0C801969587958C7F8858DB -:102DA000954BFC01259134910296FC01459154917B -:102DB000B80167707727469FC001479F900D569FC7 -:102DC000900D112443E0969587954A95E1F7281BCD -:102DD000390B2436310590F4E3E2F6E4C591D49141 -:102DE0008991882311F080DDFBCF4AE050E0B801E3 -:102DF00084E998E00E945F4524E630E0C901A0E044 -:102E0000B0E08093C0189093C118A093C218B093FB -:102E1000C3183093890020938800E091DF18F09167 -:102E2000E01880899189A289B389B695A79597956D -:102E30008795B095A095909581959F4FAF4FBF4FC7 -:102E40008093D4189093D518A093D618B093D71820 -:102E50008093D0189093D118A093D218B093D31820 -:102E60008093CC189093CD18A093CE18B093CF1820 -:102E70008093C8189093C918A093CA18B093CB1820 -:102E80001092C4181092C5181092C6181092C71844 -:102E900006C080ED97E0909389008093880010929F -:102EA0008E18E091DF18F091E018309709F4F7C51B -:102EB000808D8093D8189FB780FF09C0F8948091C7 -:102EC0000B01816080930B019FBF8FEF08C0F894C6 -:102ED00080910B018E7F80930B019FBF81E08093D7 -:102EE00072028091D8189FB781FF09C0F894809131 -:102EF0000B018D7F80930B019FBF8FEF08C0F8946B -:102F000080910B01826080930B019FBF81E08093D1 -:102F100073022091D8183091760220FF3FC03323EE -:102F200009F479C04091060142FB442740F94093DF -:102F3000DE18442381F18091A618882361F1E09185 -:102F4000DF18F091E01880819181A281B381181679 -:102F500019061A061B06FCF480918F1890919018A0 -:102F6000A0919118B09192188093AA189093AB18E1 -:102F7000A093AC18B093AD1881E08093A918808914 -:102F80009189A289B3898093C4189093C518A0939E -:102F9000C618B093C7184093A6183DC03323D9F183 -:102FA0004091060142FB442740F94093DD18442339 -:102FB00081F18091A518882361F1E091DF18F091EB -:102FC000E01880819181A281B381181619061A0632 -:102FD0001B06FCF480918F1890919018A091911885 -:102FE000B09192188093AA189093AB18A093AC1844 -:102FF000B093AD1881E08093A91880899189A28946 -:10300000B3898093C4189093C518A093C618B09341 -:10301000C7184093A51821FF3FC0332309F479C096 -:1030200030910601331F3327331F3093DC183323CD -:1030300081F18091A418882361F1E091DF18F0916B -:10304000E01884819581A681B781181619061A06A1 -:103050001B06FCF48091931890919418A0919518F8 -:10306000B09196188093AE189093AF18A093B018B3 -:10307000B093B11881E08093A81880899189A289C2 -:10308000B3898093C4189093C518A093C618B093C1 -:10309000C7183093A4183DC03323D9F130910601ED -:1030A000331F3327331F3093DB18332381F1809193 -:1030B000A318882361F1E091DF18F091E018848172 -:1030C0009581A681B781181619061A061B06FCF40D -:1030D0008091931890919418A0919518B09196189A -:1030E0008093AE189093AF18A093B018B093B11816 -:1030F00081E08093A81880899189A289B3898093FF -:10310000C4189093C518A093C618B093C7183093ED -:10311000A3189FB722FF53C0F89480910B018460DD -:1031200080930B019FBF8FEF809374028091760292 -:10313000882309F48CC08091A018811188C01C9943 -:1031400006C02091060126FB222720F901C021E0BC -:103150002093DA18222381F18091A218882361F14B -:10316000E091DF18F091E01880859185A285B38504 -:10317000181619061A061B06FCF4809197189091F0 -:103180009818A0919918B0919A188093B2189093BA -:10319000B318A093B418B093B51881E08093A71822 -:1031A00080899189A289B3898093C4189093C518A6 -:1031B000A093C618B093C7182093A21848C0F894DB -:1031C00080910B018B7F80930B019FBF31E0309387 -:1031D0007402809176028823D1F12091060126FBAA -:1031E000222720F92093D918222379F18091A11860 -:1031F000882359F1E091DF18F091E01880859185DE -:10320000A285B385181619061A061B06F4F48091D8 -:10321000971890919818A0919918B0919A18809346 -:10322000B2189093B318A093B418B093B518309314 -:10323000A71880899189A289B3898093C418909333 -:10324000C518A093C618B093C7182093A1188091F1 -:10325000A0188823B1F11C9906C02091060126FB15 -:10326000222720F901C021E02093DA18222339F126 -:103270008091A218882319F180919718909198183D -:10328000A0919918B0919A188093B2189093B3189E -:10329000A093B418B093B51881E08093A718E0917B -:1032A000DF18F091E01880899189A289B389809311 -:1032B000C4189093C518A093C618B093C71820934C -:1032C000A2188091D8189FB783FF09C0F894809105 -:1032D0000B018F7B80930B019FBF8FEF08C0F89489 -:1032E00080910B01806480930B019FBF81E08093EC -:1032F000750210E08091B918181708F0ACC184E984 -:1033000098E006DBE091DF18F091E0188091D41886 -:103310009091D518A091D618B091D71840815181BD -:1033200062817381840F951FA61FB71F8093D418E5 -:103330009093D518A093D618B093D71818161906DD -:103340001A061B06F4F5409A80918E1881608093CE -:103350008E18E091DF18F091E0188091D4189091C8 -:10336000D518A091D618B091D71840895189628993 -:103370007389841B950BA60BB70B8093D41890937D -:10338000D518A093D618B093D718409172028091A7 -:103390008F1890919018A0919118B091921855277C -:1033A00047FD5095652F752F840F951FA61FB71FDA -:1033B00080938F1890939018A0939118B0939218BF -:1033C0004098E091DF18F091E0188091D01890912A -:1033D000D118A091D218B091D3184481558166813B -:1033E0007781840F951FA61FB71F8093D0189093E5 -:1033F000D118A093D218B093D318181619061A062C -:103400001B06F4F5419A80918E18826080938E1885 -:10341000E091DF18F091E0188091D0189091D118C8 -:10342000A091D218B091D3184089518962897389CB -:10343000841B950BA60BB70B8093D0189093D118D3 -:10344000A093D218B093D31840917302809193182F -:1034500090919418A0919518B0919618552747FD12 -:103460005095652F752F840F951FA61FB71F80934A -:10347000931890939418A0939518B0939618419828 -:10348000E091DF18F091E0188091CC189091CD1860 -:10349000A091CE18B091CF18408551856285738573 -:1034A000840F951FA61FB71F8093CC189093CD183B -:1034B000A093CE18B093CF18181619061A061B063B -:1034C000F4F5429A80918E18846080938E18E09172 -:1034D000DF18F091E0188091CC189091CD18A09150 -:1034E000CE18B091CF184089518962897389841BA5 -:1034F000950BA60BB70B8093CC189093CD18A09387 -:10350000CE18B093CF184091740280919718909183 -:103510009818A0919918B0919A18552747FD509581 -:10352000652F752F840F951FA61FB71F80939718BF -:1035300090939818A0939918B0939A184298E09194 -:10354000DF18F091E0188091C8189091C918A091E7 -:10355000CA18B091CB184485558566857785840F48 -:10356000951FA61FB71F8093C8189093C918A093E2 -:10357000CA18B093CB18181619061A061B060CF0B9 -:1035800042C0439AE091DF18F091E0188091C8188A -:103590009091C918A091CA18B091CB18408951894F -:1035A00062897389841B950BA60BB70B8093C8188F -:1035B0009093C918A093CA18B093CB184091750284 -:1035C00080919B1890919C18A0919D18B0919E1885 -:1035D000552747FD5095652F752F840F951FA61F02 -:1035E000B71F80939B1890939C18A0939D18B0933D -:1035F0009E1843988091E1189091E218019690935B -:10360000E2188093E1188091C4189091C518A09198 -:10361000C618B091C7180196A11DB11D8093C4189A -:103620009093C518A093C618B093C7184091C418BA -:103630005091C5186091C6187091C718E091DF18B5 -:10364000F091E01880899189A289B38948175907B8 -:103650006A077B07B0F04091C4185091C51860917B -:10366000C6187091C718E091DF18F091E018828DAC -:10367000938DA48DB58D84179507A607B70718F409 -:10368000D9C01F5F37CE4091C0185091C1186091CA -:10369000C2187091C3180489158926893789AA2709 -:1036A000419FB12D529FC001629F900D619F800D7F -:1036B000911D429FB00D811D9A1F519FB00D811D1C -:1036C0009A1F609FB00D811D9A1F509FB10D8A1FD8 -:1036D0009A1FB6958A1F9A1F112443AD54AD480F07 -:1036E000591F5093BB184093BA1887A990ADA1AD4C -:1036F000B2AD60E070E084179507A607B70720F425 -:103700009093BB188093BA186091BA187091BB1847 -:1037100061348CE9780728F46132EEE47E0748F0E2 -:1037200002C060E47CE9769567957695679584E0BC -:1037300007C06131F7E27F0730F07695679582E048 -:103740008093B91808C081E08093B9186032710580 -:1037500010F460E270E08B0100521109011528E0BD -:103760001207E0F0812F9927880F991F880F991F62 -:103770008858914BFC01329625913491AA27039FDA -:10378000A001029F410D5A1F06944A1F5A1F11247F -:10379000FC0125913491241B350B1EC0C801969560 -:1037A00087958C7F8858954BFC0125913491029622 -:1037B000FC0145915491B80167707727469FC0017D -:1037C000479F900D569F900D1124A3E096958795E5 -:1037D000AA95E1F7281B390B2436310590F4E3E272 -:1037E000F6E4C591D4918991882311F07DD8FBCF5F -:1037F0004AE050E0B80184E998E00E945F4524E681 -:1038000030E030938900209388008091C018909117 -:10381000C118A091C218B091C318820F931FA11DA7 -:10382000B11D8093C0189093C118A093C218B09393 -:10383000C318F5C04091C4185091C5186091C618BE -:103840007091C718868D978DA0A1B1A18417950797 -:10385000A607B70708F0D7C04091BC185091BD1813 -:103860006091BE187091BF1804891589268937891F -:10387000AA27419FB12D529FC001629F900D619F69 -:10388000800D911D429FB00D811D9A1F519FB00D5B -:10389000811D9A1F609FB00D811D9A1F509FB10D11 -:1038A0008A1F9A1FB6958A1F9A1F11242091BA1851 -:1038B0003091BB18FF962817390718F42081318101 -:1038C00002C0281B390B80819181A281B381A9019B -:1038D00060E070E0481759076A077B0708F49C010D -:1038E00021348CE9380728F42132EEE43E0748F011 -:1038F00002C020E43CE9369527953695279584E06B -:1039000007C02131F7E23F0730F03695279582E076 -:103910008093B91808C081E08093B918203231052E -:1039200010F420E230E0890100521109011528E06D -:103930001207E0F0812F9927880F991F880F991F90 -:103940008858914BFC01329625913491AA27039F08 -:10395000A001029F410D5A1F06944A1F5A1F1124AD -:10396000FC0125913491241B350B1EC0C80196958E -:1039700087958C7F8858954BFC0125913491029650 -:10398000FC0145915491B80167707727469FC001AB -:10399000479F900D569F900D112443E09695879573 -:1039A0004A95E1F7281B390B2436310598F4E3E2F8 -:1039B000F6E4C591D4918991882319F00F94741479 -:1039C000FACF4AE050E0B80184E998E00E945F45F0 -:1039D00024E630E030938900209388008091BC1861 -:1039E0009091BD18A091BE18B091BF18820F931F7F -:1039F000A11DB11D8093BC189093BD18A093BE1853 -:103A0000B093BF180CC08091B7189091B8189093DC -:103A10008900809388008091B6188093B91800912E -:103A2000C4181091C5182091C6183091C7188091FC -:103A3000DF189091E018FC014089518962897389EF -:103A4000E091E118F091E2180417150726073707EF -:103A5000C0F0BF010E94F1CD1092E2181092E1185F -:103A60001092E0181092DF189091DE128091DD1212 -:103A70009817A9F08091DD128F5F8F708093DD120F -:103A80000EC020916C0230916D02E217F3073CF0FA -:103A9000BF010E94F1CD1092E2181092E1188091BE -:103AA0008E18DF91CF911F910F910D94C2341F9208 -:103AB0000F920FB60F9211240BB60F922F933F93D4 -:103AC0004F935F936F937F938F939F93AF93BF9326 -:103AD000EF93FF932DB78EB790E0982F8827820F32 -:103AE000911D2091890230918A028217930720F458 -:103AF00090938A028093890242D8FF91EF91BF91FF -:103B0000AF919F918F917F916F915F914F913F9175 -:103B10002F910F900BBE0F900FBE0F901F90189516 -:103B20009091DE128091DD12981769F00F94112A9E -:103B30000F94053B8111F4CF81E00E94CF6080E0BB -:103B40000F943C84EDCF0895CF93DF93EFB7F894B3 -:103B5000EC0188819981AA81BB8180938F18909311 -:103B60009018A0939118B0939218EB0188819981D5 -:103B7000AA81BB818093931890939418A093951871 -:103B8000B0939618EA0188819981AA81BB818093BC -:103B9000971890939818A0939918B0939A18E901E0 -:103BA00088819981AA81BB8180939B1890939C18EE -:103BB000A0939D18B0939E18EFBFDF91CF91089509 -:103BC0002FB7F894FC0180819181A281B381809309 -:103BD0009B1890939C18A0939D18B0939E182FBF8C -:103BE00008952FB7F89494E0899FF0011124E157CC -:103BF000F74E60817181828193812FBF0895CF93A9 -:103C0000C82FEFDF0F9411C124E0C29FF0011124EF -:103C1000E659F74E20813181428153810F9476C05D -:103C2000CF9108957DDF179A1092E709169A1092A6 -:103C3000E809149A089580916F008D7F80936F003A -:103C40009091DE128091DD12981769F09091DE124A -:103C50008091DD129817A1F38091DD128F5F8F7034 -:103C60008093DD12EDCF1092E0181092DF18809152 -:103C70006F00826080936F000895CF93DF93CDB77C -:103C8000DEB72C970FB6F894DEBF0FBECDBF8130E4 -:103C9000A1F120F0823009F45FC08FC01798209105 -:103CA000090121709FB7611105C0F89480910B0143 -:103CB000816004C0F89480910B018E7F80930B018A -:103CC0009FBF409A80918E18816080938E1880E00B -:103CD00090E0A0E0BFE389879A87AB87BC874098D4 -:103CE0009FB7222329F0F89480910B01816062C074 -:103CF000F89480910B018E7F5DC016982091090188 -:103D000022709FB7662329F0F89480910B0182609E -:103D100004C0F89480910B018D7F80930B019FBFAD -:103D2000419A80918E18826080938E188BEA9AEA6D -:103D3000AAE2BEE38D839E83AF83B88741989FB785 -:103D4000222329F0F89480910B01826033C0F8940B -:103D500080910B018D7F2EC0159820910901247050 -:103D60009FB7611105C0F89480910B01846004C075 -:103D7000F89480910B018B7F80930B019FBF429A37 -:103D800080918E18846080938E188BEA9AEAAAEA52 -:103D9000BEE389839A83AB83BC8342989FB7222377 -:103DA00029F0F89480910B01846004C0F89480910C -:103DB0000B018B7F80930B019FBF2C960FB6F8945D -:103DC000DEBF0FBECDBFDF91CF910895EF92FF927E -:103DD0000F931F93CF93DF931F92CDB7DEB77B0175 -:103DE0008C01061B170B460FC701800F911F4983DB -:103DF0000F94EDCCF70181937F0149814E13F4CFED -:103E00000F90DF91CF911F910F91FF90EF90089548 -:103E1000DB0181110DC02FEF30E00F9499C520ED2B -:103E200037E040E050E00F9468C5B9018EE21DC054 -:103E3000813069F42FEF30E00F9499C520ED37E021 -:103E400040E050E00F9468C5B9018DE20EC08230A9 -:103E500071F42FEF30E00F9499C520ED37E040E08A -:103E600050E00F9468C5B9018CE20D946BB80895C9 -:103E700041E06FE978E18FEF9FE0A8DF61E08EE23B -:103E80000F9483B961E08DE20F9483B961E08CE215 -:103E90000F9483B980919F18882321F08091811A13 -:103EA0008823A9F080917702909178029093840200 -:103EB000809383028091790290917A029093860296 -:103EC0008093850280917B0290917C0214C0809146 -:103ED0007D0290917E029093840280938302809170 -:103EE0007F02909180029093860280938502809158 -:103EF0008102909182029093880280938702609160 -:103F000083027091840280E083DF6091850270916A -:103F1000860281E07DDFA0918702B09188022FEFB9 -:103F200030E00F9499C520ED37E040E050E00F9469 -:103F300068C5B9018CE20F946BB880912101887F2C -:103F400081608093210108950F94663891DFEAE043 -:103F5000F1E08081816080838081826080838081C4 -:103F6000846080838081806480830F9A179A0E9A80 -:103F7000169A0D9A159A0C9A149AE7E0F1E080814E -:103F80008B7F80839FB7F894E8E0F1E080818460C4 -:103F900080839FBFE7E0F1E080818F7780839FB7C8 -:103FA000F894E8E0F1E08081806880839FBFE7E0DB -:103FB000F1E080818F7B80839FB7F894E8E0F1E0A7 -:103FC0008081806480839FBFE7E0F1E08081877F0C -:103FD00080839FB7F894E8E0F1E080818860808377 -:103FE0009FBF26982E9A25982D9A24982C9AE7E020 -:103FF000F1E080818B7F80839FB7F894E8E0F1E067 -:104000008081846080839FBFE7E0F1E080818F77CB -:1040100080839FB7F894E8E0F1E080818068808336 -:104020009FBF0998119A389A4098179A1092E709F9 -:10403000399A4198169A1092E8093A9A42983B9A0E -:104040004398149AA1E8B0E08C918F7E8C938C9168 -:1040500088608C93E0E8F0E080818D7F80838081B0 -:104060008E7F808380818F73808380818F7C80832B -:104070008C91887F82608C9380E090E4909389009B -:10408000809388001092850010928400EFE6F0E0A3 -:1040900080818260808381E08093760278940895A5 -:1040A00080938D0260938C0240938B0261E00F94A9 -:1040B00083B961E080918C020F9483B961E08091B3 -:1040C0008D020F94BCB961E080918C020F94BCB951 -:1040D00088EE93E00D94FEB7CF93DF93EC0160E0A0 -:1040E00080918D020F94BCB9CE010F94FEB760E0B1 -:1040F00080918C020F94BCB9CE01DF91CF910D94C9 -:10410000FEB7CF93DF93EC0161E080918C020F94B6 -:10411000BCB9CE010F94FEB761E080918D020F947F -:10412000BCB9CE01DF91CF910D94FEB70F931F93D1 -:10413000CF93DF93EC018B0160E080918D020F94AF -:1041400083B9CE010F94FEB7CE010F94FEB761E0A4 -:1041500080918C020F94BCB980918D020F94F1B9BB -:10416000892B19F401E010E00CC00115110519F4B8 -:1041700000E010E006C001501109CE010F94FEB717 -:10418000EBCF60E080918C020F94BCB9CE010F940C -:10419000FEB761E080918D020F9483B9CE010F9438 -:1041A000FEB760E080918D020F94BCB9CE010F94F0 -:1041B000FEB7C801DF91CF911F910F910895DF9253 -:1041C000EF92FF920F931F93CF93DF937C0161E0F7 -:1041D00080918D020F94BCB9C7010F94FEB760E0C7 -:1041E00080918D020F9483B907E010E0D12C61E03B -:1041F00080918C020F94BCB9C7010F94FEB78091D7 -:104200008D020F94F1B9C1E0D0E0892B11F4C0E028 -:10421000D0E0002E01C0CC0F0A94EAF7CD29DC2EA5 -:1042200060E080918C020F94BCB9C7010F94FEB777 -:1042300001501109E0F661E080918D020F9483B97D -:104240008C2FDF91CF911F910F91FF90EF90DF9016 -:104250000895EF92FF920F931F93CF93DF938C01FA -:10426000C7E0D0E0E62EF12CC7010C2E02C09595D8 -:1042700087950A94E2F780FF02C061E001C060E028 -:1042800080918D020F94BCB9C8010F94FEB761E014 -:1042900080918C020F94BCB9C8010F94FEB760E006 -:1042A00080918C020F94BCB9C8010F94FEB721977E -:1042B000D8F6DF91CF911F910F91FF90EF90089565 -:1042C0009F92AF92BF92CF92DF92EF92FF920F93A5 -:1042D0001F93CF93DF93E82E962E5A0190918B0275 -:1042E000C92FCF7021E030E0A90102C0440F551F53 -:1042F000CA95E2F7EA0192959F70690102C0CC0C61 -:10430000DD1C9A95E2F7CA01E7DEF12CEE0CFF1CEA -:104310006E2DCE019EDFB601CE0108DF8C01009725 -:1043200019F4CE01EEDE24C0692DCE0192DFB60174 -:10433000CE01FCDE892B19F400E010E019C0CE019B -:10434000E0DECE01C9DE6E2D6160CE0182DFB601F6 -:10435000CE01ECDE892B81F3CE0131DF182FCE01A7 -:10436000D0DEA114B10411F0F501108301E010E0DA -:10437000C801DF91CF911F910F91FF90EF90DF90D7 -:10438000CF90BF90AF909F900895BF92CF92DF9251 -:10439000EF92FF920F931F93CF93DF93182FB62EB8 -:1043A0006A0190918B02C92FCF7021E030E0A90102 -:1043B00002C0440F551FCA95E2F7EA0192959F701B -:1043C000790102C0EE0CFF1C9A95E2F7CA0184DE67 -:1043D000612F70E0660F771FCE013BDFB701CE0182 -:1043E000A5DE8C01009719F4CE018BDE18C06B2D71 -:1043F000CE012FDFB701CE0199DE892B19F400E041 -:1044000010E00DC0F6016081CE0123DFB701CE01BF -:104410008DDE892BA1F3CE0174DE01E010E0C8012E -:10442000DF91CF911F910F91FF90EF90DF90CF9090 -:10443000BF9008954F925F926F927F928F929F925A -:10444000AF92BF92CF92DF92EF92FF920F931F93A2 -:10445000CF93DF932C012BEC36E581E090E0F9015E -:1044600045915491441655060CF062C0AC01415080 -:104470005109DA01AA0FBB1FAA0FBB1FA753B94AE4 -:10448000FD0165917491440F551F440F551F495309 -:10449000594AFA0165907490FC01EE0FFF1FEE0F70 -:1044A000FF1FE753F94AA590B490FD0105911491BF -:1044B000F901C591D491FA0185909490882777FDF0 -:1044C0008095982F0F9411C16B017C01B201661980 -:1044D0007709882777FD8095982F0F9411C12B01BC -:1044E0003C01B501601B710B882777FD8095982FE3 -:1044F0000F9411C19B01AC01C301B2010F9444C3DD -:104500002B013C01BE0168197909882777FD809548 -:10451000982F0F9411C19B01AC01C301B2010F94FC -:1045200076C09B01AC01C701B6010F9496BF11C0C4 -:1045300001962C5F3F4F8D33910509F090CFE9EB49 -:10454000F7E565917491882777FD8095982F0F94F2 -:1045500011C16B017C0120E030E040E252E4C70170 -:10456000B6010F9472C287FD1BC020E030E048E422 -:1045700052E4C701B6010F946FC018168CF020E00A -:1045800030E040E252E4C701B6010F9495BF20E04D -:1045900030E040E05FE30F9444C39B01AC013FC0B7 -:1045A00020E030E048E452E4C701B6010F9472C243 -:1045B00018163CF520E030E048EC52E4C701B601A3 -:1045C0000F946FC01816ECF020E030E040EA50E4A1 -:1045D000C701B6010F9496BF4B015C0120E030E0AB -:1045E00048E452E4C701B6010F9495BF2DEC3CECB2 -:1045F0004CEC5DE30F9444C39B01AC01C501B401D5 -:1046000010C020E030E048EC52E4C701B6010F943E -:1046100072C2181654F420E030E040E251E4C701C1 -:10462000B6010F9496BF6B017C01C701B601DF9103 -:10463000CF911F910F91FF90EF90DF90CF90BF909F -:10464000AF909F908F907F906F905F904F90089564 -:1046500090911909911107C09091C00095FFFCCF6E -:104660008093C6000895913031F49091C80095FF71 -:10467000FCCF8093CE0008954F925F926F927F920D -:104680008F929F92AF92BF92CF92DF92EF92FF9262 -:104690000F931F93CF93DF932C012BE436E581E03A -:1046A00090E0F90145915491441655060CF062C012 -:1046B000AC0141505109DA01AA0FBB1FAA0FBB1F61 -:1046C000A75BB94AFD0165917491440F551F440FD2 -:1046D000551F495B594AFA0165907490FC01EE0F31 -:1046E000FF1FEE0FFF1FE75BF94AA590B490FD0195 -:1046F00005911491F901C591D491FA018590949096 -:10470000882777FD8095982F0F9411C16B017C014C -:10471000B20166197709882777FD8095982F0F9445 -:1047200011C12B013C01B501601B710B882777FD7E -:104730008095982F0F9411C19B01AC01C301B20168 -:104740000F9444C32B013C01BE01681979098827E5 -:1047500077FD8095982F0F9411C19B01AC01C30187 -:10476000B2010F9476C09B01AC01C701B6010F9452 -:1047700096BF11C001962C5F3F4F8032910509F022 -:1047800090CFE5ECF6E565917491882777FD8095EB -:10479000982F0F9411C1DF91CF911F910F91FF902E -:1047A000EF90DF90CF90BF90AF909F908F907F90D1 -:1047B0006F905F904F9008954F925F926F927F92AB -:1047C0008F929F92AF92BF92CF92DF92EF92FF9221 -:1047D0000F931F93CF93DF9360E0809177199091AF -:1047E00078194ADF6093731970937419809375195F -:1047F0009093761980917119909172191BDE6093D4 -:104800006D1970936E1980936F1990937019409081 -:104810006B1950906C1923EC35E581E090E0F901BB -:1048200045915491441655060CF062C0AC014150BC -:104830005109DA01AA0FBB1FAA0FBB1FAF53BA4A17 -:10484000FD0165917491440F551F440F551F41544C -:104850005A4AFA0165907490FC01EE0FFF1FEE0FAB -:10486000FF1FEF53FA4AA590B490FD0105911491F2 -:10487000F901C591D491FA0185909490882777FD2C -:104880008095982F0F9411C16B017C01B2016619BC -:104890007709882777FD8095982F0F9411C12B01F8 -:1048A0003C01B501601B710B882777FD8095982F1F -:1048B0000F9411C19B01AC01C301B2010F9444C319 -:1048C0002B013C01BE0168197909882777FD809585 -:1048D000982F0F9411C19B01AC01C301B2010F9439 -:1048E00076C09B01AC01C701B6010F9496BF11C001 -:1048F00001962C5F3F4F8232910509F090CFE5E49D -:10490000F6E565917491882777FD8095982F0F942F -:1049100011C1609367197093681980936919909316 -:104920006A19809161199091621984DD60935D1913 -:1049300070935E1980935F19909360198FB7F89404 -:10494000109244198FBFDF91CF911F910F91FF906B -:10495000EF90DF90CF90BF90AF909F908F907F901F -:104960006F905F904F9008952091A9023091AA0214 -:104970004091AB025091AC0260E070E08FE793E4AD -:104980000F9476C06093241970932519809326198B -:10499000909327192091990230919A0240919B029D -:1049A00050919C0260E070E08FE793E40F9476C032 -:1049B0006093031970930419809305199093061955 -:1049C000089597FF03C080914B1904C0FC01EE5F6E -:1049D000F64E808190E00895CF93DF93D82FC62FB5 -:1049E000C19561E00F9483B96C2F8D2F0F94BCB9E2 -:1049F0006C2F70E08D2FDF91CF910D946BB88F925B -:104A00009F92AF92BF92CF92DF92EF92FF920F935D -:104A10001F93CF93DF93C6E2DAE06881798188271C -:104A200077FD8095982F0F9411C16B017C010F9435 -:104A300098B70091FE181091FF182091001930913D -:104A40000119601B710B820B930B0F940FC19B011B -:104A5000AC0160E070E08AE793E40F9476C09B01BC -:104A6000AC01C701B6010F9444C30F94DEC070932C -:104A7000230A6093220A08E21AE0F801608171813A -:104A8000882777FD8095982F0F9411C16B017C01C9 -:104A90000F9498B78090FE189090FF18A09000197E -:104AA000B0900119681979098A099B090F940FC1FF -:104AB0009B01AC0160E070E08AE793E40F9476C05C -:104AC0009B01AC01C701B6010F9444C30F94DEC033 -:104AD0007093250A6093240A19821882F8011182C2 -:104AE0001082DF91CF911F910F91FF90EF90DF9097 -:104AF000CF90BF90AF909F908F9008951F93CF93CA -:104B0000DF93182F0F94E449882321F08091821AB3 -:104B1000811184C08091820A882379F020913D0A16 -:104B200030913E0A232B19F00F94D7850AC081E0FB -:104B30008093821A0F94BD4204C010927C19109287 -:104B40007B19EAE1FFE08491EF01882329F080DD01 -:104B50002196FE018491F9CF112341F0113009F023 -:104B60005DC0E1E5F4E58491EF012CC0E4E9F4E5F2 -:104B70008491EF01882329F06BDD2196FE01849159 -:104B8000F9CF8AE065DD0F94E449811147C09FB7F2 -:104B9000F894809102018460809302019FBF88ECA9 -:104BA00090E00F94FEB79FB7F894809102018B7F3D -:104BB000809302019FBF84E690E00F94FEB78FE7D9 -:104BC00094E527C0882329F043DD2196FE018491D6 -:104BD000F9CF8AE03DDD0F94E44981111FC09FB7F2 -:104BE000F894809102018460809302019FBF88EC59 -:104BF00090E00F94FEB79FB7F894809102018B7FED -:104C0000809302019FBF84E690E00F94FEB78CE38F -:104C100094E5DF91CF911F910D94DC49DF91CF9105 -:104C20001F910895CF9387E89FE00F94EDCCC1E0EA -:104C3000811101C0C0E0C09307028091220A9091C7 -:104C4000230A892BB1F420E030E048E452E460917B -:104C500073197091741980917519909176190F9448 -:104C600072C2181634F48091F6188F5F8093F6188C -:104C700002C01092F6188091240A9091250A892B7F -:104C800069F48091E0099091E1098C34910534F048 -:104C90008091F7188F5F8093F71802C01092F71871 -:104CA0008091F618863020F0CC2311F080E026DFCA -:104CB0008091F718803138F080910702882319F02D -:104CC00081E0CF911BCFCF910895CF93C1E020E039 -:104CD00030E048E452E46091731970917419809146 -:104CE0007519909176190F9472C218160CF0C0E0E5 -:104CF0006C2F88E090E0CF916FCE1092281910921F -:104D0000291910922A1910922B192091A902309179 -:104D1000AA024091AB025091AC0260E070E08FE7D4 -:104D200093E40F9476C060932419709325198093AF -:104D300026199093271910920719109208191092AA -:104D4000091910920A192091990230919A02409102 -:104D50009B0250919C0260E070E08FE793E40F9417 -:104D600076C060930319709304198093051990938A -:104D700006196D9A9D9A80910101886080930101C6 -:104D80000E94783180E888BD80916E0084608093B5 -:104D90006E006AEF70E080E090E00F94C7B78FE09C -:104DA00090E09093FB188093FA1860E08091930252 -:104DB0009091940261DC20E030E040E751E40F94F0 -:104DC0006FC087FF0AC08091930290919402409730 -:104DD0009093940280939302E8CF81E391E09093C3 -:104DE00092028093910260E08091FC189091FD18EE -:104DF00043DC20E030E848E953E40F9472C218160F -:104E000054F48091FC189091FD1840969093FD18F1 -:104E10008093FC18E8CF80918F02909190020ADB7A -:104E200020E030E040E751E40F946FC087FF0AC0F4 -:104E300080918F029091900240979093900280937E -:104E40008F02E9CF8091F8189091F918F3DA20E0F9 -:104E500030E04AEF52E40F9472C2181654F4809175 -:104E6000F8189091F91840969093F9188093F818D3 -:104E7000E9CF0895089510927C1910927B19109231 -:104E80007A191092791910920219759810927A195C -:104E90001092791910924B19A59808951F93CF93EA -:104EA000DF93C82F162F81E08093D1090F941B1E2A -:104EB0008091820A882339F01092820A60E080E8AB -:104EC0009AE00E94FAB9D7DF179A1092E709169A6A -:104ED0001092E809149AA5D280E00F943C848FB711 -:104EE000F894909102019460909302018FBF84EF37 -:104EF00091E00F94FEB78FB7F894909102019B7FD9 -:104F0000909302018FBF84E690E00F94FEB7CC230C -:104F100009F454C00E94165F112319F08AE294E547 -:104F200002C08CE194E50F94DC49EAE1FFE0849152 -:104F3000EF01882329F08CDB2196FE018491F9CFC3 -:104F4000112389F1E8EFF3E58491EF01882329F03B -:104F50007FDB2196FE018491F9CF8AE079DB809195 -:104F6000010180628093010180910101886080933A -:104F700001019FB7F8948091020180628093020141 -:104F80009FBF6FEF70E086E00F946BB88FEF90E0FB -:104F90009093E1098093E00980ED97E0DF91CF9154 -:104FA0001F910D94FEB7E5EDF3E58491EF018823A1 -:104FB000A1F24EDB2196FE018491F9CF112319F065 -:104FC00081EC93E502C081EB93E50F94DC49EAE1C3 -:104FD000FFE08491EF01882329F03ADB2196FE015E -:104FE0008491F9CF112381F0E8E9F3E58491EF0191 -:104FF000882329F02DDB2196FE018491F9CF8AE0E8 -:10500000DF91CF911F9124CBE0E8F3E58491EF018C -:105010008823A9F31DDB2196FE018491F9CF2F92FD -:105020003F924F925F926F927F928F929F92AF9238 -:10503000CF92DF92EF92FF920F931F93CF93DF9364 -:10504000CDB7DEB72C970FB6F894DEBF0FBECDBF3D -:105050001C012A013B0109831A832B833C83AA206C -:1050600039F01A8619861D821E821F8218860CC08E -:105070002DE230E03A87298780E090E0A0E7B1E4B4 -:105080008D839E83AF83B8870F9498B70F940FC119 -:105090008101000F111F000F111FD801AB57B64E31 -:1050A0004D012D913D914D915C910F9495BF20E064 -:1050B00030E04AEF54E40F9472C218160CF099C114 -:1050C0000F9498B70F940FC1F401608371838283AA -:1050D000938320E030E0A901C701B6010F946FC0AF -:1050E000811107C0F101EE0FFF1FE358F64E118248 -:1050F000108298012B56364E4901A3019201D4012A -:105100006D917D918D919C910F946FC08823B1F129 -:1051100020E030E0A901C301B2010F9472C2F8018E -:10512000EB55F64E181604F580E090E0A0E8BFE3DA -:1051300080839183A283B383F4014082518262828F -:105140007382F801E251F74E89819A81AB81BC816B -:1051500080839183A283B383F101EE0FFF1FE65199 -:10516000F74E118210820AC01082118212821382BD -:10517000D4014D925D926D927C92139720E030E0C5 -:1051800040E85FE3F801EB55F64E60817181828162 -:1051900093810F946FC081118BC0AA2059F02DEC20 -:1051A0003CEC4CE45FE3C301B2010F9444C39B01A8 -:1051B000AC0104C020E030E046E153E469817A812B -:1051C0008B819C810F946FC087FF72C04101880C56 -:1051D000991CF401E651F74E8081918101969183EB -:1051E0008083AA2019F020E130E002C028E030E0FE -:1051F000281739070CF05CC0F801E251F74E208106 -:1052000031814281538169817A818B819C810F94A4 -:1052100095BF20E030E040E050E40F946FC0910172 -:10522000220F331F3C872B8787FF09C0F401EA5107 -:10523000F74E8081918101969183808306C0EB8532 -:10524000FC85EA51F74E11821082F401EA51F74EC3 -:1052500020813181AA2019F082E090E002C085E02F -:1052600090E0821793079CF48091811A882321F0A3 -:1052700080E090E00F9451566A2D81E00FDE80911E -:10528000811A882321F08BE590E00F945156F801A4 -:10529000E251F74E89819A81AB81BC8180839183F1 -:1052A000A283B383EB85FC85E651F74E1182108211 -:1052B000A301920169817A818B819C810F9472C2D2 -:1052C00087FD19C0D801AB55B64E4D0120E030E046 -:1052D00040E85FE36D917D918D919C910F946FC03B -:1052E000811109C080E090E0A0E0B0E4F401808387 -:1052F0009183A283B38320E030E0A901C701B60106 -:105300000F9472C218160CF074C02D813E814F812B -:105310005885C301B2010F9495BF29813A814B8111 -:105320005C810F946FC087FF1AC02D813E814F8131 -:105330005885C301B2010F9496BF9B01AC016981EE -:105340007A818B819C810F946FC087FF08C0F10127 -:10535000EE0FFF1FE358F64E118210824AC0F8018B -:10536000EB55F64E20E030E040E85FE3608171816C -:10537000828193810F9472C21816DCF5F101EE0F51 -:10538000FF1FE358F64E80819181019691838083BF -:10539000880F991F29853A852817390754F5809178 -:1053A000811A882321F080E090E00F9451566A2DF5 -:1053B00080E074DD8091811A8823D9F08AE590E03D -:1053C0002C960FB6F894DEBF0FBECDBFDF91CF9104 -:1053D0001F910F91FF90EF90DF90CF90AF909F9033 -:1053E0008F907F906F905F904F903F902F900D9493 -:1053F00051562C960FB6F894DEBF0FBECDBFDF918D -:10540000CF911F910F91FF90EF90DF90CF90AF90D1 -:105410009F908F907F906F905F904F903F902F90D4 -:1054200008952F923F924F925F926F927F928F9248 -:105430009F92AF92BF92CF92DF92EF92FF920F9323 -:105440001F93CF93DF93CDB7DEB728970FB6F894AD -:10545000DEBF0FBECDBFA89580914419882309F403 -:1054600045C3AAD96091021970E080E090E00F94E2 -:1054700011C16B017C0140907319509074196090B8 -:1054800075197090761960917B1970917C19882735 -:1054900077FD8095982F0F9411C1AB01BC01A12C11 -:1054A0009301820181E090E0BADD809073199090C1 -:1054B0007419A0907519B090761900917B1910910C -:1054C0007C19B801882777FD8095982F0F9411C11A -:1054D000A50194010F9495BF6B017C0160932C1979 -:1054E00070932D1980932E1990932F1920E030E09E -:1054F00040E251E40F9472C2181624F481E08093C4 -:105500002319F7C020E030E040E251ECC701B601BA -:105510000F946FC087FD02C0012B21F481E08093BE -:1055200023190CC180912319882351F0109240193E -:105530001092411910924219109243191092231996 -:105540002091AD023091AE024091AF025091B00275 -:10555000C701B6010F9444C369837A838B839C830C -:10556000609338197093391980933A1990933B19C5 -:10557000209140193091411940914219509143199D -:10558000C701B6010F9496BF2B013C01209028194A -:105590003090291910912A1900912B199101412F4E -:1055A000502F0F946FC087FD14C0209024193090A5 -:1055B000251910912619009127199101412F502F7B -:1055C000B201C3010F9472C218161CF01201162DFD -:1055D000072DC101A12FB02F80934019909341193D -:1055E000A0934219B09343192091A9023091AA02C5 -:1055F0004091AB025091AC02B101812F902F0F94DA -:1056000044C36D837E838F8398876093341970932E -:105610003519809336199093371920913C193091A0 -:105620003D1940913E1950913F19C501B4010F94A5 -:1056300095BF2091A5023091A6024091A7025091FA -:10564000A8020F9444C320ED3CEC4CE45DE30F94BE -:1056500044C32B013C0123E333E343E75FE3609161 -:1056600030197091311980913219909133190F943A -:1056700044C39B01AC01C301B2010F9496BF2B013F -:105680003C016093301970933119809332199093D3 -:1056900033192D813E814F81588569817A818B81B3 -:1056A0009C810F9496BFA30192010F9495BF2B018B -:1056B0003C0120E030E04FE753E40F9472C220E059 -:1056C00030E0A9011816E4F4C701B6010F9472C2C4 -:1056D00018167CF4A7019601B101812F902F0F9429 -:1056E00095BF60934019709341198093421990932C -:1056F0004319412C512CBFE76B2EB3E47B2E21C004 -:10570000C301B2010F946FC087FF1BC020E030E0DF -:10571000A901C701B6010F946FC087FF0FC0A70191 -:105720009601B101812F902F0F9495BF609340197E -:10573000709341198093421990934319412C512C35 -:10574000320180923C1990923D19A0923E19B0927C -:105750003F1920E030E040E951E460916719709111 -:1057600068198091691990916A190F946FC087FD2B -:1057700012C06091FA187091FB18882777FD809508 -:10578000982F0F9411C19B01AC01C501B4010F9476 -:1057900072C21816DCF4609191027091920288270F -:1057A00077FD8095982F0F9411C19B01AC01C50125 -:1057B000B4010F946FC087FF09C0C301B2010F94F9 -:1057C000DEC0759567956093021902C010920219A8 -:1057D0000F9498B70091FE181091FF1820910019AE -:1057E00030910119601B710B820B930B693E734062 -:1057F0008105910568F003D915DA67DA0F9498B737 -:105800006093FE187093FF1880930019909301190C -:1058100080905D1990905E19A0905F19B09060190A -:105820006091791970917A19882777FD8095982F62 -:105830000F9411C1A50194010F9495BF6B017C01D8 -:1058400060930B1970930C1980930D1990930E1996 -:1058500020919D0230919E0240919F025091A002A2 -:105860000F9444C369837A838B839C836093171955 -:10587000709318198093191990931A1920911F1970 -:10588000309120194091211950912219C701B60178 -:105890000F9496BF8B011C01609007197090081936 -:1058A0005090091940900A199301452D542D0F94D9 -:1058B0006FC087FD11C0609003197090041950905B -:1058C0000519409006199301452D542DB801C101C9 -:1058D0000F9472C218161CF48301252C342CC801B5 -:1058E000D10180931F1990932019A0932119B0938F -:1058F00022192091990230919A0240919B02509175 -:105900009C02B801C1010F9444C36D837E838F83D1 -:1059100098876093131970931419809315199093B5 -:10592000161920911B1930911C1940911D19509185 -:105930001E19C501B4010F9495BF209195023091B5 -:10594000960240919702509198020F9444C320ED23 -:105950003CEC4CE45DE30F9444C32B013C0123E396 -:1059600033E343E75FE360910F1970911019809161 -:105970001119909112190F9444C39B01AC01C301FA -:10598000B2010F9496BF2B013C0160930F197093E5 -:105990001019809311199093121980921B199092EB -:1059A0001C19A0921D19B0921E192D813E814F81A4 -:1059B000588569817A818B819C810F9496BFA30160 -:1059C00092010F9495BF2B013C0120E030E04FE79E -:1059D00053E40F9472C220E030E0A9011816ACF431 -:1059E000C701B6010F9472C218166CF5A701960193 -:1059F000B801C1010F9495BF60931F1970932019CE -:105A000080932119909322191EC0C301B2010F94F3 -:105A10006FC087FF22C020E030E0A901C701B601B6 -:105A20000F946FC087FF16C0A7019601B801C1018E -:105A30000F9495BF60931F197093201980932119BB -:105A40009093221907C0412C512CFFE76F2EF3E4ED -:105A50007F2E03C0412C512C320120E030E040E782 -:105A600051E4C501B4010F9472C2181684F020E00D -:105A700030E040E951E460916719709168198091B4 -:105A8000691990916A190F946FC087FF13C020E0C5 -:105A900030E04AEF52E4C501B4010F946FC087FFB4 -:105AA00009C0C301B2010F94DEC07595679560937C -:105AB0004B1902C010924B1928960FB6F894DEBF0E -:105AC0000FBECDBFDF91CF911F910F91FF90EF904F -:105AD000DF90CF90BF90AF909F908F907F906F900E -:105AE0005F904F903F902F900C94544D28960FB696 -:105AF000F894DEBF0FBECDBFDF91CF911F910F9104 -:105B0000FF90EF90DF90CF90BF90AF909F908F90DD -:105B10007F906F905F904F903F902F9008952F92BD -:105B20003F924F925F926F927F928F929F92AF922D -:105B3000BF92CF92DF92EF92FF920F931F93CF937A -:105B4000DF93CDB7DEB7E7970FB6F894DEBF0FBE91 -:105B5000CDBF6F8F78A389A39AA35B874A873DA7A0 -:105B60002CA730934E1920934D1910924C19109276 -:105B7000501910924F190F9498B76B017C014A8409 -:105B80005B8457FE03C00DE20FA302C01AE01FA3FF -:105B90000F9498B768A779A78AA79BA74A845B84C4 -:105BA000141415041CF005ED15E00BC008EE15E00B -:105BB000D8018D918D01882309F455C20F942823B3 -:105BC000F7CFF80181918F01882319F00F942823D2 -:105BD000F8CF8AE00F9428234ED94A845B848FE75C -:105BE000452871F180934B19CC8ADD8AEE8AFF8AB1 -:105BF000C88AD98AEA8AFB8A1986198200E40C8F3E -:105C00001CE11D8F06E40E8F188E198E1A8E1B8EC6 -:105C10008FE7482E512C612C712C4D825E826F8251 -:105C200078864AAA5BAA6CAA7DAA1BA21CA21DA206 -:105C30001EA201E00C87212C312C1FAA1EAA06C02F -:105C400080930219D1CF80E00F943C84A895809175 -:105C50004419882309F402C10F94DC234A845B842D -:105C6000452859F020905D1930905E1950905F19C9 -:105C70005FAA609060196EAA0AC0209073193090D4 -:105C80007419709075197FAA009176190EAB910165 -:105C90004FA95EA9688D798D8A8D9B8D0F9472C2F4 -:105CA000181634F0288E398E1FA91A8F4EA84B8EE5 -:105CB00091014FA95EA969817C8D8D8D9E8D0F9478 -:105CC0006FC087FD06C029823C8E5FA85D8E6EA8DE -:105CD0006E8E0F9498B748A459A46AA47BA4641943 -:105CE000750986099709653C79408105910540F061 -:105CF0000F9465260F9498B768A779A78AA79BA7E2 -:105D00001C85112309F451C02F8D38A149A15AA136 -:105D1000B1018FA99EA90F9472C218160CF09EC0F3 -:105D20000F9498B74C885D886E887F8864197509D0 -:105D300086099709693873418105910508F48EC079 -:105D40008AA99BA9ACA9BDA94D805E806F8078848B -:105D500084199509A609B7096A847B84B595A79526 -:105D600097958795672819F080934B1902C0809307 -:105D700002190F9498B7688B798B8A8B9B8B2B01B8 -:105D80003C010C891D892E893F89401A510A620AFB -:105D9000730A4BA25CA26DA27EA21F8D188F48A031 -:105DA000498E59A05A8E6AA06B8E2F8D38A149A1B9 -:105DB0005AA1B1018FA99EA90F946FC087FF32C36A -:105DC0000F9498B7488859886A887B886419750940 -:105DD00086099709693873418105910508F422C342 -:105DE0000F9498B76C8B7D8B8E8B9F8BAB01BC0116 -:105DF000441955096609770980914F1990915019F6 -:105E0000181619060CF43AC18D819E81AF81B885B0 -:105E10004AA85BA86CA87DA8840D951DA61DB71D7A -:105E20006A847B84B595A79597958795672809F42B -:105E3000F6C280934B1980914F1990915019019699 -:105E40009093501980934F197F8C798208A10C8F01 -:105E500019A11D8F4AA04E8E01E00C8720E030E092 -:105E600040EA51E46F8D78A189A19AA10F9496BF61 -:105E70009B01AC01B1018FA99EA90F9472C21816A3 -:105E800074F4EEE4F5E584918F01882309F4EBC006 -:105E90000F9428230F5F1F4FF8018491F6CF0F94C2 -:105EA00098B76C197D098E099F09613D774081057E -:105EB000910508F492C04A845B84452881F0E09003 -:105EC0004B19F12CE8E4F5E584918F018823B9F0B2 -:105ED0000F9428230F5F1F4FF8018491F7CFE090B4 -:105EE0000219F12CE2E4F5E584918F01882339F061 -:105EF0000F9428230F5F1F4FF8018491F7CF22E002 -:105F000030E0A1016FA97EA984E998E00E94F945DB -:105F1000EEE3F5E584918F01882339F00F9428236F -:105F20000F5F1F4FF8018491F7CF4AE050E0B701AF -:105F300084E998E00E9428458AE00F942823498448 -:105F4000442009F43EC05FA0451418F4042D0F5FEF -:105F50003FC019854FA014113CC01F5F19872EA5A3 -:105F60003FA548A959A9B1018FA99EA90F9495BF32 -:105F70006B017C0120E030E0A9010F9472C2181679 -:105F80005CF420E030E040EA50E4C701B6010F9431 -:105F90006FC087FF1EC00AC020E030E040EA50EC2E -:105FA000C701B6010F9472C218169CF46B85661F68 -:105FB0006627661F80E00F944E2781E080934C197E -:105FC00033C22EA63FA65FA858AA6EA869AA01E010 -:105FD00009870F9498B76B017C010F9498B74B0118 -:105FE0005C010F9498B70C891D892E893F894888D8 -:105FF00059886A887B88040D151D261D371D801A57 -:10600000910AA20AB30A860E971EA81EB91E01E8BD -:1060100080160FE4900602E1A006B10468F0E1E208 -:10602000F5E584918F018823F1F00F9428230F5F09 -:106030001F4FF8018491F7CF80914F19909150191B -:106040004CA45DA4481659060CF0FDCDE5ECF4E532 -:1060500084918F01882339F00F9428230F5F1F4FFD -:10606000F8018491F7CF8AE00F94282381E0809390 -:106070004C191092501910924F19D6C14BA05CA028 -:106080006DA07EA0440E551E661E771E0BA11CA19E -:106090002DA13EA1041B150B260B370BC901B8011E -:1060A0002D813E814F8158850F9403C5A301920134 -:1060B0000F9468C58AA99BA9ACA9BDA9280F391F4F -:1060C0004A1F5B1F24313105410551051CF12AABE4 -:1060D0003BAB4CAB5DAB2C3E31054105510544F06B -:1060E0000BEE10E020E030E00AAB1BAB2CAB3DAB7D -:1060F0002AA93BA94CA95DA92038310541055105C4 -:10610000D4F08EEF90E0A0E0B0E0821B930BA40BE4 -:10611000B50B15C004E110E020E030E00AAB1BAB8A -:106120002CAB3DAB24E130E040E050E02D833E83DA -:106130004F83588708C08AA99BA9ACA9BDA98D83A4 -:106140009E83AF83B887E7EBF5E584918F018823C1 -:1061500039F00F9428230F5F1F4FF8018491F7CF78 -:106160002AE030E04AA95BA96CA97DA984E998E0FE -:106170000E941645E2EBF5E584918F01882339F002 -:106180000F9428230F5F1F4FF8018491F7CF2AE067 -:1061900030E04D815E816F81788584E998E00E94CE -:1061A0001645EBEAF5E584918F01882339F00F94C9 -:1061B00028230F5F1F4FF8018491F7CF22E030E0D2 -:1061C00049815C8D6D8D7E8D84E998E00E94F94552 -:1061D000E4EAF5E584918F01882339F00F942823B0 -:1061E0000F5F1F4FF8018491F7CF22E030E0488D18 -:1061F000598D6A8D7B8D84E998E00E94F9458AE08B -:106200000F94282380914F199091501903970CF403 -:10621000FBCD6D817E818F8198850F9411C120E027 -:1062200030E040E850E40F9444C34B015C01298105 -:106230003C8D4D8D5E8D688D798D8A8D9B8D0F94F3 -:1062400095BF20ED3FE049E450E40F9444C320E0C3 -:1062500030E040E05FE30F9444C39B01AC01C50113 -:10626000B4010F9476C04B015C01C301B2010F94DD -:1062700011C120E030E04AE754E40F9476C02B01CE -:106280003C01EEE9F5E584918F01882339F00F9404 -:1062900028230F5F1F4FF8018491F7CF22E030E0F1 -:1062A000B501A40184E998E00E94F945E8E9F5E523 -:1062B00084918F01882339F00F9428230F5F1F4F9B -:1062C000F8018491F7CF22E030E0B301A20184E924 -:1062D00098E00E94F9458AE00F9428232AE939E9D9 -:1062E00049E15FE3C501B4010F9444C34B015C0174 -:1062F0006093591970935A1980935B1990935C19A4 -:106300009B01AC010F9496BFA30192010F9476C03C -:106310006093551970935619809357199093581993 -:10632000A3019201C501B4010F9444C320E030E001 -:1063300040E05EE30F9444C3609351197093521987 -:106340008093531990935419EAE8F5E584918F01ED -:10635000882339F00F9428230F5F1F4FF801849191 -:10636000F7CF8AE00F942823E4E8F5E584918F01C4 -:10637000882339F00F9428230F5F1F4FF801849171 -:10638000F7CF4091591950915A1960915B1970914A -:106390005C1922E030E084E998E00E94F9458AE047 -:1063A0000F942823EEE7F5E584918F01882339F0D7 -:1063B0000F9428230F5F1F4FF8018491F7CF40916E -:1063C000551950915619609157197091581922E03A -:1063D00030E084E998E00E94F9458AE00F94282390 -:1063E000E8E7F5E584918F01882339F00F9428239D -:1063F0000F5F1F4FF8018491F7CF409151195091D1 -:106400005219609153197091541922E030E084E9D7 -:1064100098E00E94F9458AE00F942823F5CC8093F8 -:10642000021909CD1C861ACDE7960FB6F894DEBF87 -:106430000FBECDBFDF91CF911F910F91FF90EF90D5 -:10644000DF90CF90BF90AF909F908F907F906F9094 -:106450005F904F903F902F9008951F93CF93DF93BD -:10646000182F0F943B270E94575F81112AC0EAE141 -:10647000FFE08491EF01882331F00F9428232196C7 -:10648000FE018491F8CF612F70E04AE050E084E98A -:1064900098E00E9428458AE00F942823E3E5F3E57D -:1064A0008491EF01882331F00F9428232196FE0177 -:1064B0008491F8CF8AE00F94282386E493E50F9423 -:1064C000DC490E94165F8091010180628093010186 -:1064D00080910101886080930101809101018460B5 -:1064E000809301019FB7F8948091020188608093A6 -:1064F00002019FBF9FB7F894809102018062809350 -:1065000002019FBF9FB7F89480910201846080933D -:1065100002019FBF8FEF90E09093E1098093E00923 -:106520008091811A882339F08DE590E0DF91CF9139 -:106530001F910D945156DF91CF911F9108951F9394 -:10654000CF93DF93182F0F943B270E94575F811141 -:106550002AC0EAE1FFE08491EF01882331F00F9433 -:1065600028232196FE018491F8CF612F70E04AE044 -:1065700050E084E998E00E9428458AE00F9428239F -:10658000E9E1F3E58491EF01882331F00F942823AA -:106590002196FE018491F8CF8AE00F9428238CE0A5 -:1065A00093E50F94DC490E94165F8091811A88233D -:1065B00039F08CE590E0DF91CF911F910D94515609 -:1065C000DF91CF911F910895CF93DF93A5980E94FB -:1065D000575F81111FC0EAE1FFE08491EF0188233A -:1065E00031F00F9428232196FE018491F8CFE3ED3A -:1065F000F2E58491EF01882331F00F94282321964E -:10660000FE018491F8CF8AE00F94282382EC92E572 -:106610000F94DC49DF91CF910C94165FCF93DF93F9 -:10662000A5980E94575F81111FC0EAE1FFE08491A5 -:10663000EF01882331F00F9428232196FE018491E5 -:10664000F8CFE9E8F2E58491EF01882331F00F9467 -:1066500028232196FE018491F8CF8AE00F94282305 -:1066600088E792E50F94DC49DF91CF910C94165F97 -:106670008091E31A9091E41A909378198093771996 -:106680008091E71A9091E81A9093621980936119AA -:106690008091E91A9091EA1A909372198093711976 -:1066A0008091EB1A9091EC1A90936619809365197A -:1066B0008091ED1A9091EE1A90936C1980936B195A -:1066C0008091EF1A9091F01A909364198093631956 -:1066D00081E08093441908952091771930917819B9 -:1066E0008091FC189091FD188217930714F080E0B8 -:1066F000B4DE20916119309162198091F81890915F -:10670000F918821793072CF010927A1910927919C0 -:106710005BCF089520917719309178198091930279 -:10672000909194022817390714F080E008CF08955B -:10673000209161193091621980918F02909190029D -:10674000281739070CF06ACF089580916B19909142 -:106750006C19813F9D432CF0659905C01092E31898 -:106760000895D8DFE5CF8091E318833308F0D2CFC6 -:106770008F5F8093E31808958CB120912A0A86FBDD -:10678000882780F9821769F08091260A9091270A5C -:1067900001969093270A8093260A81E082278093AE -:1067A0002A0A08951F920F920FB60F9211240BB66A -:1067B0000F920F931F932F933F934F935F936F937A -:1067C0007F938F939F93AF93BF93CF93DF93EF9379 -:1067D000FF9380914419811103C00E94BF3102C010 -:1067E0007BDFB3DF0F94E74980918E02811112C0E5 -:1067F000809102198093E518882311F0759A01C0E1 -:10680000759880914B198093E418882311F0A59A0C -:1068100001C0A5989091E51880918E02981708F410 -:1068200075989091E41880918E02981708F4A598B5 -:1068300080918E028F5F8F7780938E0200E010E050 -:10684000E801CC0FDD1FCB5BD64E888199811816ED -:10685000190644F461E0802F0F943D1E88819981D0 -:10686000019709C0892B49F060E0802F0F943D1EED -:10687000888199810196998388830F5F1F4F033028 -:106880001105F1F679DFFF91EF91DF91CF91BF9183 -:10689000AF919F918F917F916F915F914F913F91B8 -:1068A0002F911F910F910F900BBE0F900FBE0F9065 -:1068B0001F9018952CEA35EC47E25EE30D9444C333 -:1068C0002CEA35EC47E25EE30D9476C02CEA35EC19 -:1068D00047E25EE30D9476C02CEA35EC47E25EE3D6 -:1068E0000D9444C390911909911107C09091C00073 -:1068F00095FFFCCF8093C6000895913031F49091BC -:10690000C80095FFFCCF8093CE0008952091AB1A6C -:10691000222399F03FB7F8942091AB1A213059F413 -:106920002DB32093A91A4DB32091AA1A20952423A0 -:106930002DBB3FBF02C03093A91A8CBD9DBD0895E9 -:106940008EBD00000DB407FEFDCF8EB50895809179 -:10695000AB1A882361F09FB7F8942091AB1A80910D -:10696000A91A213019F48DBB9FBF08958FBF0895D8 -:106970008091060182FB882780F99091060197FD9E -:10698000826008951F93CF93DF938091D719813050 -:1069900009F458C08091B102882309F453C0E8DF9C -:1069A0009091BA19ABEBB9E1E3ECF9E120E030E00A -:1069B00010E061E070E0AB01022E01C0440F0A94C8 -:1069C000EAF7482329F0408151814F5F5F4F07C0AC -:1069D000408151814115510521F0415051095183A8 -:1069E000408340815181CD91DC911197C417D50727 -:1069F00060F411965C934E934034510528F0118257 -:106A0000108291E011E001C091E02F5F3F4F12969C -:106A100032962330310579F69093BA198091D219C4 -:106A2000811110C08091B102882361F0112351F0CF -:106A300081E08093CB191092B102DF91CF911F9129 -:106A40000C945D6FDF91CF911F9108958093B202F6 -:106A50001092D1191092D0191092CC191092CD1910 -:106A60001092CE191092CF1908958FEF8093B20231 -:106A70002091D0193091D11940E050E06091CC19AB -:106A80007091CD198091CE199091CF190F9446C570 -:106A9000C90108958091CA021F928F938091CE02FE -:106AA0001F928F938091C9021F928F938091CD0284 -:106AB0001F928F938091C8021F928F938091CC0276 -:106AC0001F928F938091C7021F928F938091CB0268 -:106AD0001F928F938BEB97E59F938F930F9414CA1C -:106AE0008DB79EB742960FB6F8949EBF0FBE8DBF6E -:106AF0000895AF92BF92CF92DF92EF92FF920F93E1 -:106B00001F93CF93DF9300D01F92CDB7DEB7B82E7F -:106B1000F62E8CE590E02C833B834A835983F6DE86 -:106B200060E08B2D0F94BCB98F2D0ADF5981852F22 -:106B300007DF4A81842F04DF3B81832F01DF2C8113 -:106B4000822FFEDE61E08B2D0F94BCB900DF8CE557 -:106B500090E0DCDE60E08B2D0F94BCB980E0F0DECD -:106B6000A82E80E0EDDEC82ED12CE12CF12CFE2CDD -:106B7000ED2CDC2CCC2480E0E3DEC82AFE2CED2CAE -:106B8000DC2CCC2480E0DCDEC82AFE2CED2CDC2CB6 -:106B9000CC2480E0D5DEC82A61E08B2D0F94BCB9EF -:106BA000D6DE0115110529F0F801C082D182E282FA -:106BB000F3828A2D0F900F900F900F90DF91CF915D -:106BC0001F910F91FF90EF90DF90CF90BF90AF900B -:106BD00008950F931F93606800E010E08ADF1F9113 -:106BE0000F9108958F929F92AF92BF92CF92DF92B2 -:106BF000EF92FF920F93742F922F2E2DEC2D217078 -:106C000030E040E050E0F3E1220F331F441F551FF6 -:106C1000FA95D1F7E3708E2E912CA12CB12CA4E122 -:106C2000880C991CAA1CBB1CAA95D1F728293929C4 -:106C30004A295B290170C02ED12CE12CF12CB2E144 -:106C4000CC0CDD1CEE1CFF1CBA95D1F72C293D297C -:106C50004E295F29262B372B9370492B60E70F9124 -:106C6000FF90EF90DF90CF90BF90AF909F908F906C -:106C7000B0CFCF92EF92FF920F931F93CF93DF93FA -:106C8000E82EF62EC2E1D6E08991882311F02ADEA3 -:106C9000FBCFCE2DD0E04AE050E0BE0184E998E081 -:106CA0000E94284502ED17E0F80181918F018823A9 -:106CB00011F018DEF9CF6F2D70E04AE050E084E962 -:106CC00098E00E944445FE01EF53FD4FF082F1E051 -:106CD000FE15C8F08091D7198130A9F4CE018354F4 -:106CE0009D4FDE01A554BD4FAE0141545D4FC153D0 -:106CF000DD4FC12CE12CFC0100812C91FA01408177 -:106D00006F2D88816FDFDF91CF911F910F91FF90E1 -:106D1000EF90CF900895CF92EF92FF920F931F9331 -:106D2000CF93DF93E82EF62EC8E2D6E08991882330 -:106D300011F0D8DDFBCFCE2DD0E04AE050E0BE010F -:106D400084E998E00E94284502ED17E0F80181915E -:106D50008F01882311F0C6DDF9CF6F2D70E04AE076 -:106D600050E084E998E00E944445FE01E154FD4F63 -:106D7000F082F1E0FE15C8F08091D7198130A9F4B6 -:106D8000CE0183549D4FDE01A554BD4FBE016F530C -:106D90007D4FC153DD4FC12CE12CFC0100812C91B2 -:106DA0004F2DFB01608188811DDFDF91CF911F9105 -:106DB0000F91FF90EF90CF9008959A01AB0163E19E -:106DC00008CF0F931F93CF93DF93042FE82FF0E0AA -:106DD000E153FD4F10816F70C22FD0E0862F90E0FD -:106DE000A0E0B0E0203288F4582F44273327222730 -:106DF000236D436050616CE6812FEBDE202F2F71F5 -:106E000030E040E050E04F6019C0582F442733274E -:106E10002227236D416050616CE6812FDADE202F3E -:106E200030E0359527952F713327442737FD40955E -:106E3000542F4F60D595C795CF71DD279C2F88279C -:106E4000AA2797FDA095BA2F282B392B4A2B5B2B0D -:106E500060E1812FDF91CF911F910F91BACECF9238 -:106E6000DF92EF92FF920F931F93CF93DF93C82E81 -:106E70000FEC12E0C0E0D0E0EE24E394F12C970197 -:106E80000C2E01C0220F0A94EAF7F801D1908F016D -:106E90008C2D8223A9F18091D219822B8093D21953 -:106EA00020E030E0A90160E08D2D93DEFE01ED547D -:106EB000FD4F2081822F90E0A0E0B0E0AC013327AD -:106EC00022276DE68D2D85DE2EEA31E040E050E090 -:106ED00064E18D2D7EDEFE01ED53FD4F2081FE012C -:106EE000E553FD4F4081FE01ED52F64E60818C2F3F -:106EF00068DF20E831E340E050E060E08D2D69DE9E -:106F00002196C330D10509F0BACFDF91CF911F91FF -:106F10000F91FF90EF90DF90CF900895EF92FF9246 -:106F20000F931F93CF93DF938091D219882309F495 -:106F300062C00FEC12E0C0E0D0E0EE24E394F12C4C -:106F40002091D2192370C7010C2E01C0880F0A941A -:106F5000EAF7282309F446C08091D719813069F4F3 -:106F600024E030E040E050E060E0F801808131DE74 -:106F700020E030E0A90164E132C0FE01E953FD4F99 -:106F80002081FE01E553FD4F4081FE01ED52F64E9A -:106F900060818C2F16DFFE01E954FD4F2081822F86 -:106FA00090E0A0E0B0E0AC01332722276DE6F801C5 -:106FB00080810FDE8091D719813021F420E030E00C -:106FC000A90104C02EEA31E040E050E064E1F8019C -:106FD0008081FFDD20E831E340E050E060E0F8012F -:106FE0008081F7DD21960F5F1F4FC330D10509F077 -:106FF000A7CF1092D2191092CB19DF91CF911F9188 -:107000000F91FF90EF900895EF92FF921F93CF930F -:10701000DF931F92CDB7DEB7182FE82EF12C1F9209 -:107020006F931F928F9325E238E53F932F936983E7 -:107030000F9414CAF701E553FD4F498140830F9027 -:107040000F900F900F900F900F90F701E953FD4FA5 -:10705000D701AD52B64E20816C91812F0F90DF91F8 -:10706000CF911F91FF90EF90ACCEEF92FF921F93C4 -:10707000CF93DF931F92CDB7DEB7182FE82EF12CF8 -:107080001F926F931F928F934AEF57E55F934F9331 -:1070900069830F9414CAF701E953FD4F29812083B6 -:1070A0000F900F900F900F900F900F90F701E553F6 -:1070B000FD4FD701AD52B64E40816C91812F0F909C -:1070C000DF91CF911F91FF90EF907BCE2F923F9257 -:1070D0004F925F926F927F928F929F92AF92BF92E8 -:1070E000CF92EF920F931F93CF93DF93CDB7DEB77D -:1070F00028970FB6F894DEBF0FBECDBF8091D71989 -:10710000882319F085E898E502C08EE798E59F93FB -:107110008F9385E698E59F938F930F9414CA84E02C -:107120008093D3198093D4198093D51982E08093EA -:10713000D619A09AA29A9FB7F8948091080180620C -:10714000809308019FBF9FB7F894809108018061E8 -:10715000809308019FBF989A9A9A80910701806254 -:1071600080930701809107018061809307018091DE -:1071700007018B7F80930701809107018F778093B0 -:107180000701809107018F7B8093070180910701A0 -:10719000877F809307010F942DB757EC452E52E05F -:1071A000552E6BEC662E62E0762E73EDA72E79E1FC -:1071B000B72E8FEC92E098878F83E7EB8E2EE2E07C -:1071C0009E2EFDEB2F2EF2E03F2EEBEBF2E0FE8346 -:1071D000ED838FEB92E09C838B83E1ECF2E0FA830A -:1071E000E9830F900F900F900F9010E0F201219122 -:1071F0002F01F30141913F01F50161915F01812F61 -:10720000E0DD20E030E0A90161E1EF81F8858081D7 -:10721000E0DCF40121914F01822F90E0A0E0B0E08A -:10722000AC01332722276DE6EF81F8858081D1DC20 -:107230008091D719813021F420E030E0A90104C009 -:107240002EEA31E040E050E064E1EF81F885808192 -:10725000C0DC8091D719813029F424E030E040E08F -:1072600050E004C020E831E340E050E060E0EF810E -:10727000F8858081AEDCF10101911F01ED81FE8175 -:107280002191FE83ED83EB81FC814191FC83EB83B3 -:10729000E981FA816191FA83E983C12CE12CEF81C4 -:1072A000F88580819FDC40E050E0BA01EF81F885ED -:1072B0008191F887EF8381DD1F5F123009F096CF4F -:1072C0002091C9024091CD026091D51982E079DD0B -:1072D00020E030E0A90161E18091D1027ADC20E870 -:1072E00031E340E050E060E08091D10272DC209117 -:1072F000CA024091CE026091D61983E062DD20E09F -:1073000030E0A90161E18091D20263DC20E831E341 -:1073100040E050E060E08091D2025BDC1092C41942 -:107320001092C3191092C6191092C5191092C8195B -:107330001092C7191092CA191092C9191092BC194B -:107340001092BB191092BE191092BD191092C0195B -:107350001092BF191092C2191092C11928960FB637 -:10736000F894DEBF0FBECDBFDF91CF911F910F917B -:10737000EF90CF90BF90AF909F908F907F906F9045 -:107380005F904F903F902F900895EF92FF920F9350 -:107390001F93CF93DF9300D01F92CDB7DEB77A0152 -:1073A00019821A821B821C828E010F5F1F4F20E000 -:1073B00030E0A9019EDBE114F10449F009811A8152 -:1073C0002B813C81F70100831183228333830F904B -:1073D0000F900F900F90DF91CF911F910F91FF9021 -:1073E000EF9008959F92AF92BF92CF92DF92EF926B -:1073F000FF920F931F93CF93DF9300D01F92CDB7CF -:10740000DEB70F9498B70091B5191091B619209175 -:10741000B7193091B819601B710B820B930B693E41 -:1074200073408105910508F462C01FECE12E12E063 -:10743000F12E00E010E09924939480E5C82E88E5B1 -:10744000D82E19821A821B821C829092B919AE0121 -:107450004F5F5F4F6FE6F70181917F0196DF898172 -:107460009A81AB81BC81B2FF2FC0F6018491B0E557 -:10747000AB2EB8E5BB2E882339F034DAFFEFAF1A14 -:10748000BF0AF5018491F7CF4AE050E0B80184E9E2 -:1074900098E00E9428458AE025DAAFECAA2EA2E007 -:1074A000BA2E20E030E041E050E06CE6F501819139 -:1074B0005F018FDBF3EDAF16F2E0BF0691F760E0FE -:1074C00080E598E50E94A45E0F5F1F4F0430110510 -:1074D00009F0B7CF0F9498B76093B5197093B619A8 -:1074E0008093B7199093B81981E08093BA190F90DF -:1074F0000F900F900F90DF91CF911F910F91FF9000 -:10750000EF90DF90CF90BF90AF909F9008950F9332 -:107510001F93CF93DF93CDB7DEB729970FB6F894BB -:10752000DEBF0FBECDBF8C01101611068CF51D827B -:107530001E821F82188619821A821B821C82AE014B -:107540004B5F5F4F6FE68091CF021FDFAE014F5F51 -:107550005F4F6FE68091D00218DF4D815E816F81B1 -:10756000788577FF0CC049815A816B817C814427E3 -:1075700077FD4395552766277727842F01C080E044 -:10758000898730DF015011098985882369F201C09C -:1075900080E029960FB6F894DEBF0FBECDBFDF9115 -:1075A000CF911F910F910895CF93DF9300D01F9239 -:1075B000CDB7DEB719821A821B821C82AE014F5FE3 -:1075C0005F4F6AE6E2DE89819A8193700F900F9097 -:1075D0000F900F90DF91CF910895CF93DF9300D05C -:1075E0001F92CDB7DEB719821A821B821C82AE01B0 -:1075F0004F5F5F4F6FE6C9DE89819A810F900F90D0 -:107600000F900F90DF91CF910895E091B202E43096 -:1076100028F5F0E0E153FD4F8081DFDF937040916A -:10762000CC195091CD196091CE197091CF19480F96 -:10763000591F611D711D4093CC195093CD19609352 -:10764000CE197093CF198091D0199091D1190196CC -:107650009093D1198093D01981E0089580E0089526 -:10766000FC019491903249F0892F8B7F893029F069 -:1076700081E09A3019F080E0089581E00895CF9379 -:10768000DF93CDB7DEB7C054D1090FB6F894DEBF93 -:107690000FBECDBF88E0EAE1F3E0DE01D9960190AC -:1076A0000D928A95E1F788E0E2E2F3E0DE01D196FF -:1076B00001900D928A95E1F788E0EAE2F3E0DE01BD -:1076C000999601900D928A95E1F788E0E2E3F3E064 -:1076D000DE01919601900D928A95E1F788E0EAE348 -:1076E000F3E0DE01599601900D928A95E1F788E06A -:1076F000E2E4F3E0DE01519601900D928A95E1F704 -:1077000088E0EAE4F3E0DE01199601900D928A9593 -:10771000E1F788E0E2E5F3E0DE01119601900D92D9 -:107720008A95E1F7AE01475C5F4F60E080E09AE147 -:107730000E94DA42AE014F5C5F4F61E080E09AE167 -:107740000E94DA42AE01475D5F4F62E080E09AE15D -:107750000E94DA42AE014F5D5F4F63E080E09AE144 -:107760000E94DA42AE01475E5F4F64E080E09AE13A -:107770000E94DA42AE014F5E5F4F65E080E09AE121 -:107780000E94DA42AE01475F5F4F66E080E09AE117 -:107790000E94DA42AE014F5F5F4F67E080E09AE1FE -:1077A0000E94DA42C05CDF4F0FB6F894DEBF0FBE16 -:1077B000CDBFDF91CF9108950F931F93CF93DF93A8 -:1077C000EB01142F022F482F60E080E09AE10E9425 -:1077D0005240612F80E09AE10F9458BA11E1FE0106 -:1077E0006491662311F0111117C0112339F060E282 -:1077F00080E09AE10F9458BA1150F7CF602F80E0E3 -:107800009AE10F9458BA60E280E09AE1DF91CF915B -:107810001F910F910D9458BA80E09AE10F9458BAD5 -:1078200021961150DCCFEF92FF920F931F93CF93CD -:10783000DF93EB01E42E8901F90101900020E9F7C3 -:10784000F22EFE1A92E1F90E482F60E080E09AE1F4 -:107850000E9452406E2D80E09AE10F9458BAFE01CA -:107860006491662311F0F11019C06AE380E09AE197 -:107870000F9458BAFF2039F060E280E09AE10F944B -:1078800058BAFA94F7CFB80180E09AE1DF91CF912E -:107890001F910F91FF90EF900D9457BA80E09AE1FD -:1078A0000F9458BA2196FA94DACFCF92DF92EF92E2 -:1078B000FF920F931F93CF93DF93D82EC62E7A019A -:1078C000E901482F80E09AE10E94524081E0E816E9 -:1078D000F10469F182E0E816F10409F04FC0BE013D -:1078E00080E09AE10F9457BAFE0101900020E9F779 -:1078F0003197EC1BFD0B6C2D6E0F4D2D80E09AE146 -:107900000E94524062E474E080E09AE10F9457BA1A -:10791000FE0101900020E9F76C2D6C1B6E0F4D2DC0 -:1079200080E09AE10E9452406EE376E028C0BE01FA -:1079300080E09AE10F9457BAFE0101900020E9F728 -:107940003197EC1BFD0B6C2D6E0F4D2D80E09AE1F5 -:107950000E94524062E474E080E09AE10F9457BACA -:10796000FE0101900020E9F76C2D6C1B6E0F4D2D70 -:1079700080E09AE10E945240B80101C0BE0180E05F -:107980009AE1DF91CF911F910F91FF90EF90DF90DF -:10799000CF900D9457BA8093460A91E09093D70206 -:1079A000682F8EEF9FE00F94FFCC8091EA19813011 -:1079B00019F482E08093EA190895E8EBFCE0608115 -:1079C00081E0682760838BEB9FE00D94FFCC8F9262 -:1079D0009F92AF92BF92CF92DF92EF92FF920F935E -:1079E0001F93CF93DF9394E08902E0011124CA50E2 -:1079F000D64F20E030E040E251E4688179818A810D -:107A00009B810F9496BF688379838A839B83E090E0 -:107A1000FE09F090FF090091000A1091010A2091DF -:107A2000FA093091FB094091FC095091FD096091E0 -:107A3000F6097091F7098091F8099091F909E2EE41 -:107A4000F9E0FF93EF93812C912CE4E3AE2EE2E476 -:107A5000BE2EF2E0CF2EFAE0DF2E0F941A070F941D -:107A6000901D89E69FE00F94EDCC0F900F90882336 -:107A700019F081E08093B102DF91CF911F910F91B6 -:107A8000FF90EF90DF90CF90BF90AF909F908F903E -:107A90000895CF9380910101846080930101CAE031 -:107AA0009FB7F894809102018460809302019FBF88 -:107AB00084E690E00F94FEB79FB7F894809102019E -:107AC0008B7F809302019FBF84E690E00F94FEB706 -:107AD000C15031F7CF91089582E08093D402109283 -:107AE0006B1AD7CF1092891A80E89AE00E94ABC334 -:107AF0001092FE1908950F93E091D502F091D602ED -:107B0000E817F907C9F09093D6028093D502409305 -:107B1000F9195093FA196093FB197093FC1900231B -:107B200039F08DE1EBE8FAE1DF011D928A95E9F782 -:107B3000222311F00F91D0CF0F9108950F9361E0A0 -:107B400080EC9FE00F94FFCC60E08FEB9FE00F9400 -:107B5000FFCC60E08EEB9FE00F94FFCC60E08DEBFC -:107B60009FE00F94FFCC60E08CEB9FE00F94FFCC84 -:107B700001E020E040E050E0BA0184E391E0BBDFA7 -:107B800010929B1A0F9108950F93FB01BA01A9015E -:107B90002091D5023091D60230938C1A20938B1A03 -:107BA0002091F9193091FA1930938E1A20938D1A79 -:107BB00022E02093D4029093901A80938F1AF0932E -:107BC000921AE093911ACB01AA2797FDA095BA2F9C -:107BD0008093931A9093941AA093951AB093961A3F -:107BE000662757FD6095762F481B590B6A0B7B0B58 -:107BF0004093971A5093981A6093991A70939A1A0F -:107C000040815181662757FD6095762F481B590B9F -:107C10006A0B7B0B00E021E082E491E06CDF0F91C6 -:107C200008950F936091070281E06827609307022F -:107C300087E89FE00F94FFCC01E021E048E050E0AE -:107C400060E070E088E491E056DF0F9108950F93B3 -:107C500001E021E040E050E0BA014DDF0F910895CE -:107C60007F928F929F92AF92BF92CF92DF92EF92CC -:107C7000FF920F931F93CF93DF938091F919909107 -:107C8000FA19A091FB19B091FC1981309048A10517 -:107C9000B10540F01092F9191092FA191092FB19DF -:107CA0001092FC198091F9199091FA19A091FB1981 -:107CB000B091FC19B695A795979587954091FE19B7 -:107CC00050E060E070E084179507A607B70710F44E -:107CD0008093FE19E090FE19D090FF19D2FADD24AE -:107CE000D0F8F12CCC24C3948091EA19811127C0DB -:107CF000EE2019F07724739425C08091D402882354 -:107D0000D9F0E091460AF0E0EE0FFF1FE159F94B80 -:107D1000659174918091F9199091FA19A091FB19CC -:107D2000B091FC1923E00297A105B10510F443E0DE -:107D300001C040E28F2D40DDD1100DC0DBCF82307D -:107D4000D9F0712C09EF17E4C0E0D0E08E2C912C13 -:107D5000A12CB12C61C08091F9199091FA19A091D0 -:107D6000FB19B091FC190297A105B10508F0C2CF2B -:107D7000B3DE88E491E034C0E110BCCF8091D4023E -:107D80008823D9F0E091460AF0E0EE0FFF1FE3529E -:107D9000FA4B659174918091F9199091FA19A0911B -:107DA000FB19B091FC1923E00297A105B10510F46D -:107DB00043E001C040E28F2DFFDCDD2009F49ACFC3 -:107DC0008091F9199091FA19A091FB19B091FC19C1 -:107DD0000297A105B10508F08DCF7EDE8EE291E01D -:107DE000DF91CF911F910F91FF90EF90DF90CF9097 -:107DF000BF90AF909F908F907F9029CF8091D402B9 -:107E000081110DC0D11026C0739421960E5F1F4FB3 -:107E1000C230D10509F43FC07E10F6CFEFCFF80194 -:107E2000659174918091F9199091FA19A091FB19BB -:107E3000B091FC19B695A7959795879520E288157E -:107E40009905AA05BB0511F44EE301C040E28F2D50 -:107E5000B3DCD8CF8091F9199091FA19A091FB1950 -:107E6000B091FC19B695A7959795879588159905B2 -:107E7000AA05BB0549F630DE8C2FDF91CF911F910B -:107E80000F91FF90EF90DF90CF90BF90AF909F90B9 -:107E90008F907F9080CD4091F9195091FA1960919F -:107EA000FB197091FC197695679557954795872D25 -:107EB00090E0A0E0B0E0481759076A077B0788F018 -:107EC000872D90E0880F991F0197AA2797FDA0950D -:107ED000BA2F8093F9199093FA19A093FB19B093D4 -:107EE000FC194091F9195091FA196091FB197091A0 -:107EF000FC1976956795579547958091FE1990E006 -:107F00000396242F30E0821793075CF48DEF840FE3 -:107F10008093FE19C092D402ACEFEA2EE40EFF2447 -:107F2000FA94F394E39483E08F1508F0DDCEDF91AB -:107F3000CF911F910F91FF90EF90DF90CF90BF9066 -:107F4000AF909F908F907F9008950F9301E021E074 -:107F500040E050E0BA01CFDD0F910895AF92BF929B -:107F6000CF92DF92EF92FF920F931F93CF93DF9305 -:107F70008091F9199091FA19A091FB19B091FC190F -:107F800081309048A105B10540F01092F919109286 -:107F9000FA191092FB191092FC198091F91990911D -:107FA000FA19A091FB19B091FC19B695A795979570 -:107FB00087954091FE1950E060E070E084179507C6 -:107FC000A607B70710F48093FE190091FE19B09030 -:107FD000FF19B2FABB24B0F810E0C5EAD7E459E0C3 -:107FE000C52ED12CE12CF12CAA24A3948091F9194F -:107FF0009091FA19A091FB19B091FC19011135C0AB -:108000002091D402222399F0E091460AF0E0EE0F8D -:10801000FF1FE159F94B6591749123E00297A10587 -:10802000B10510F443E001C040E2812FC5DBBB2065 -:1080300009F4F1C08091F9199091FA19A091FB19F6 -:10804000B091FC190297A105B10508F0E4C044DD28 -:1080500088E491E0DF91CF911F910F91FF90EF9015 -:10806000DF90CF90BF90AF90F2CD013099F5209185 -:10807000D4022223B9F0E091460AF0E0EE0FFF1F90 -:10808000EF55F84B65917491B695A795979587959F -:108090002EE70197A105B10511F44EE301C040E2BE -:1080A000812F8ADBBB2009F4B6C08091F919909129 -:1080B000FA19A091FB19B091FC19B695A79597955F -:1080C00087950197A105B10509F0A5C005DD8EE6EC -:1080D00091E096C0023099F52091D4022223B9F0A4 -:1080E000E091460AF0E0EE0FFF1FE356F84B659172 -:1080F0007491B695A795979587952EE70297A10558 -:10810000B10511F44EE301C040E2812F55DBBB20E5 -:1081100009F481C08091F9199091FA19A091FB1985 -:10812000B091FC19B695A795979587950297A105EB -:10813000B10509F070C0D0DC82EB91E061C0033082 -:1081400099F52091D4022223B9F0E091460AF0E09B -:10815000EE0FFF1FE756F84B65917491B695A79502 -:10816000979587952EE70397A105B10511F44EE386 -:1081700001C040E2812F20DBBB2009F44CC080917C -:10818000F9199091FA19A091FB19B091FC19B695C3 -:10819000A795979587950397A105B10509F03BC071 -:1081A0009BDC88E891E02CC00430A9F52091D40232 -:1081B000222389F0FE0165917491B695A795979554 -:1081C00087952EE70497A105B10511F44EE301C090 -:1081D00040E2812FF1DABB20F1F08091F919909102 -:1081E000FA19A091FB19B091FC19B695A79597952E -:1081F00087950497A105B10571F46EDC88E991E0DB -:10820000DF91CF911F910F91FF90EF90DF90CF9072 -:10821000BF90AF909ACE8091F9199091FA19A091E0 -:10822000FB19B091FC190A97A105B10540F0C09265 -:10823000F919D092FA19E092FB19F092FC194091C9 -:10824000F9195091FA196091FB197091FC19769502 -:108250006795579547958091FE1990E00396242FD6 -:1082600030E0821793074CF48DEF840F8093FE1952 -:10827000A092D4020CEF040F1FEF1F5F0F5F1430AA -:1082800008F4B4CEDF91CF911F910F91FF90EF9042 -:10829000DF90CF90BF90AF90089580E090E0A0E88D -:1082A000BFE38093E6199093E719A093E819B09380 -:1082B000E91954CECF92DF92EF92FF920F931F9362 -:1082C000CF93DF938091F9199091FA19A091FB193E -:1082D000B091FC1981309048A105B10540F0109291 -:1082E000F9191092FA191092FB191092FC19809149 -:1082F000F9199091FA19A091FB19B091FC19B69552 -:10830000A795979587954091FE1950E060E070E041 -:1083100084179507A607B70710F48093FE19C0913C -:10832000FE19D091FF19D2FBDD27D0F900E093E0D0 -:10833000C92ED12CE12CF12C11E04091F91950916A -:10834000FA196091FB197091FC19C11135C0809127 -:10835000D4028823A9F0E091460AF0E0EE0FFF1F57 -:10836000EB54F84B8591949123E04230510561051F -:10837000710510F443E001C040E2BC01802F1CDA1B -:10838000DD2309F458C08091F9199091FA19A09150 -:10839000FB19B091FC190297A105B10508F04BC07B -:1083A0009BDB8CE591E0DF91CF911F910F91FF90C6 -:1083B000EF90DF90CF904BCCC13009F03CC0809162 -:1083C000D4028823C9F0E091460AF0E0EE0FFF1FC7 -:1083D000E551F74B8591949176956795579547951B -:1083E0002EE7413051056105710511F44EE301C0DE -:1083F00040E2BC01802FE0D9DD23E9F04091F9197A -:108400005091FA196091FB197091FC197695679556 -:1084100057954795413051056105710561F45CDB65 -:1084200082ED91E0DF91CF911F910F91FF90EF903E -:10843000DF90CF908ACD8091F9199091FA19A0918F -:10844000FB19B091FC190497A105B10540F0C09249 -:10845000F919D092FA19E092FB19F092FC194091A7 -:10846000F9195091FA196091FB197091FC197695E0 -:108470006795579547958091FE1990E00396242FB4 -:1084800030E0821793074CF48DEF840F8093FE1930 -:108490001093D402CCEFC40F0FEF0F5FCF5F043007 -:1084A00008F44BCFDF91CF911F910F91FF90EF9088 -:1084B000DF90CF9008950F936091060281E06827C6 -:1084C0006093060287E09FE00F94FFCC01E021E07B -:1084D00048E050E060E070E088E491E00CDB0F9150 -:1084E00008950F936091730A81E068276093730A7F -:1084F0008FEA9FE00F94FFCC0F94381F01E021E03A -:108500004AE050E060E070E088E491E0F4DA0F9136 -:1085100008950F9380911909813019F41092190967 -:1085200003C081E0809319096091190988E09FE0F8 -:108530000F94FFCC01E021E04BE050E060E070E000 -:1085400088E491E0D8DA0F91089520E044E064E1F6 -:1085500080E09AE10E94854092D880E09AE10C94F4 -:1085600046400F93F2DF01E020E040E050E0BA0126 -:108570008EE291E0C0DA0F910895F3DF85E090E09C -:108580009093861A8093851A089581E08093470A14 -:1085900061E081EC98E50E94BCC5E3CF61E08DEB22 -:1085A00098E50E94BCC5DDCF61E087EB98E50E94AD -:1085B000BCC5D7CF61E083EB98E50E94BCC5D1CFA5 -:1085C00010927C1910927B1910927A1910927919D5 -:1085D0001092E1091092E009C4CFC3DF1092691A2A -:1085E00086E090E09093861A8093851A08958AEF2A -:1085F00090E090937C1980937B1988E290E09093AF -:108600007A19809379191092E1091092E009A9DF93 -:108610000D943A2787ED90E090937C1980937B1915 -:108620008CE390E090937A19809379191092E10984 -:108630001092E00996DF0D943A278FEF90E0909327 -:108640007C1980937B1984E690E090937A1980934B -:1086500079191092E1091092E00983DF0D943A270D -:108660008EEF90E090937C1980937B1984E690E0E4 -:1086700090937A19809379191092E1091092E00988 -:1086800070DF0D943A2780EF90E090937C198093EF -:108690007B198AE590E090937A198093791910926A -:1086A000E1091092E0095DDF0D943A278CED90E02E -:1086B00090937C1980937B1984E690E090937A19CB -:1086C000809379191092E1091092E0094ADF0D9424 -:1086D0003A2786EE90E090937C1980937B1982E391 -:1086E00090E090937A19809379191092E109109291 -:1086F000E00937DF0D943A270F9381E09091DF0274 -:10870000911180E08093DF02811103C00E94524BDF -:1087100002C00E94404B8091820A81110AC0809160 -:10872000750A811106C08091851A9091861A089762 -:1087300049F401E021E049E050E060E070E088E3C6 -:1087400091E008C001E021E049E050E060E070E025 -:1087500088E491E0D0D90F91089590911909911171 -:1087600007C09091C00095FFFCCF8093C60008958C -:10877000913031F49091C80095FFFCCF8093CE00EA -:1087800008950F931F93CF93DF938C01C1E4D6E03C -:108790008991882311F0E1DFFBCF4AE050E0B80176 -:1087A00084E998E00E942845C9E3D7E089918823AD -:1087B00011F0D3DFFBCFDF91CF911F910F9108957F -:1087C000CF93DF93CAE1D7E08991882311F0C5DF09 -:1087D000FBCF60917F1A7091801A4AE050E084E9E3 -:1087E00098E00E942845C9E3D7E08991882311F0D9 -:1087F000B4DFFBCFDF91CF910895CF93DF93C7E430 -:10880000D6E08991882311F0A8DFFBCF60917B1916 -:1088100070917C194AE050E084E998E00E94284574 -:10882000CDE4D6E08991882311F097DFFBCF6091EA -:10883000791970917A194AE050E084E998E00E9431 -:108840002845C4E5D6E08991882311F086DFFBCF67 -:10885000409173195091741960917519709176193E -:1088600022E030E084E998E00E94F945CBE5D6E0CB -:108870008991882311F071DFFBCF40915D195091F0 -:108880005E1960915F197091601922E030E084E90F -:1088900098E00E94F945C9E3D7E08991882311F057 -:1088A0005CDFFBCFDF91CF9108951F93CF93DF93D0 -:1088B000C62F482F60E080E09AE10E9452406C2F62 -:1088C00080E09AE10F9458BAC1E9DAE111E16991C7 -:1088D000662311F0111116C0112339F060E280E017 -:1088E0009AE10F9458BA1150F7CF63E080E09AE113 -:1088F0000F9458BA60E280E09AE1DF91CF911F9126 -:108900000D9458BA80E09AE10F9458BA1150DFCF15 -:108910008F929F92AF92BF92EF92FF920F931F930D -:10892000CF93DF938091F9199091FA19A091FB19D7 -:10893000B091FC1981309048A105B10540F010922A -:10894000F9191092FA191092FB191092FC198091E2 -:10895000F9199091FA19A091FB19B091FC19B695EB -:10896000A795979587954091FE1950E060E070E0DB -:1089700084179507A607B70710F48093FE19D091C6 -:10898000FE191091FF1912FB112710F9C0E0FF2406 -:10899000F394D1113CC08091D4028823E1F0E0919E -:1089A000460AF0E0EE0FFF1FE753F84B6591749114 -:1089B0008091F9199091FA19A091FB19B091FC19C5 -:1089C00023E00297A105B10510F443E001C040E2A5 -:1089D0008C2F0F94DC3B1123D1F08091F9199091E9 -:1089E000FA19A091FB19B091FC190297A105B105E4 -:1089F00070F472D886EA91E0DF91CF911F910F91C8 -:108A0000FF90EF90BF90AF909F908F9020C92091E2 -:108A1000811A8091F9199091FA19A091FB19B091DE -:108A2000FC192223B9F1D130B9F52091D4022223C7 -:108A300089F0B695A7959795879520E20197A105AE -:108A4000B10511F44EE301C040E262E07DE58C2FF8 -:108A50000F94DC3B112309F460C08091F9199091C7 -:108A6000FA19A091FB19B091FC19B695A7959795A5 -:108A700087950197A105B10509F04FC02DD8DF9169 -:108A8000CF911F910F91FF90EF90BF90AF909F906B -:108A90008F90ADCD01E001C002E00D133FC02091E9 -:108AA000D4022223B1F0B695A79597958795402FCC -:108AB00050E060E070E020E284179507A607B70752 -:108AC00011F44EE301C040E263EF7CE58C2F0F947C -:108AD000DC3B112319F18091F9199091FA19A091B9 -:108AE000FB19B091FC19B695A79597958795402FDE -:108AF00050E060E070E084179507A607B70771F4AF -:108B00000F946C3DDF91CF911F910F91FF90EF90EB -:108B1000BF90AF909F908F907DCD02E0EE24E394C4 -:108B2000E00EED1246C08091D4028823F1F08091CE -:108B3000F9199091FA19A091FB19B091FC19B69509 -:108B4000A795979587958D2E912CA12CB12C20E27D -:108B500088159905AA05BB0511F44EE301C040E252 -:108B600064EE7CE58C2F0F94DC3B112311F1809196 -:108B7000F9199091FA19A091FB19B091FC19B695C9 -:108B8000A795979587954E2D50E060E070E084178B -:108B90009507A607B70769F40F946C3DDF91CF9155 -:108BA0001F910F91FF90EF90BF90AF909F908F908B -:108BB0006ACD72E0E72EE00EED1246C08091D4023D -:108BC0008823F1F08091F9199091FA19A091FB197D -:108BD000B091FC19B695A795979587958D2E912CF8 -:108BE000A12CB12C20E288159905AA05BB0511F42A -:108BF0004EE301C040E264ED7CE58C2F0F94DC3B3A -:108C0000112311F18091F9199091FA19A091FB1992 -:108C1000B091FC19B695A795979587954E2D50E084 -:108C200060E070E084179507A607B70769F40F9412 -:108C30006C3DDF91CF911F910F91FF90EF90BF900E -:108C4000AF909F908F90F9CC43E0E42EE00EED12B0 -:108C500046C08091D4028823F1F08091F919909157 -:108C6000FA19A091FB19B091FC19B695A7959795A3 -:108C700087958D2E912CA12CB12C20E28815990579 -:108C8000AA05BB0511F44EE301C040E264EC7CE5AB -:108C90008C2F0F94DC3B112311F18091F9199091E5 -:108CA000FA19A091FB19B091FC19B695A795979563 -:108CB00087954E2D50E060E070E084179507A60779 -:108CC000B70769F40F946C3DDF91CF911F910F911D -:108CD000FF90EF90BF90AF909F908F90E7CCF4E023 -:108CE000EF2EE00EED1246C08091D4028823F1F001 -:108CF0008091F9199091FA19A091FB19B091FC1982 -:108D0000B695A795979587958D2E912CA12CB12C72 -:108D100020E288159905AA05BB0511F44EE301C0B0 -:108D200040E264EB7CE58C2F0F94DC3B112311F1C6 -:108D30008091F9199091FA19A091FB19B091FC1941 -:108D4000B695A795979587954E2D50E060E070E019 -:108D500084179507A607B70769F40F946C3DDF9158 -:108D6000CF911F910F91FF90EF90BF90AF909F9088 -:108D70008F9076CC65E0E62EE00EED1246C0809135 -:108D8000D4028823F1F08091F9199091FA19A091F9 -:108D9000FB19B091FC19B695A795979587958D2EDF -:108DA000912CA12CB12C20E288159905AA05BB05B0 -:108DB00011F44EE301C040E265EA7CE58C2F0F948C -:108DC000DC3B112311F18091F9199091FA19A091CE -:108DD000FB19B091FC19B695A795979587954E2DDF -:108DE00050E060E070E084179507A607B70769F4C4 -:108DF0000F946C3DDF91CF911F910F91FF90EF90F9 -:108E0000BF90AF909F908F9064CC36E0E32EE00E41 -:108E1000ED124DC08091D402882329F1E091460AD9 -:108E2000F0E0EE0FFF1FE353F74B659174918091D3 -:108E3000F9199091FA19A091FB19B091FC19B69506 -:108E4000A795979587958E2C912CA12CB12C20E27B -:108E500088159905AA05BB0511F44EE301C040E24F -:108E60008C2F0F94DC3B112311F14091F919509193 -:108E7000FA196091FB197091FC19769567955795D1 -:108E800047958E2D90E0A0E0B0E0481759076A079B -:108E90007B0769F40F946C3DDF91CF911F910F9187 -:108EA000FF90EF90BF90AF909F908F9089CB27E07D -:108EB000200F4091F9195091FA196091FB197091A6 -:108EC000FC197695679557954795822F90E0A0E01D -:108ED000B0E0481759076A077B0788F0822F90E0B7 -:108EE000880F991F0197AA2797FDA095BA2F809305 -:108EF000F9199093FA19A093FB19B093FC194091BA -:108F0000F9195091FA196091FB197091FC19769535 -:108F10006795579547958091FE1990E00396242F09 -:108F200030E0821793074CF48DEF840F8093FE1985 -:108F3000F092D402DCEFD40FCFEFCF5FDF5FC4300D -:108F400008F427CDDF91CF911F910F91FF90EF9003 -:108F5000BF90AF909F908F900895CF93DF93CDB740 -:108F6000DEB728970FB6F894DEBF0FBECDBF88E0FE -:108F7000EAE5F3E0DE01119601900D928A95E1F7A2 -:108F8000AE014F5F5F4F61E080E09AE10E94DA42FC -:108F900028960FB6F894DEBF0FBECDBFDF91CF91FC -:108FA0000895CF93DF93CDB7DEB728970FB6F89427 -:108FB000DEBF0FBECDBF88E0E2E6F3E0DE01119632 -:108FC00001900D928A95E1F7AE014F5F5F4F61E02E -:108FD00080E09AE10E94DA4228960FB6F894DEBF4C -:108FE0000FBECDBFDF91CF9108950F931F93CF9305 -:108FF000DF93CDB7DEB760970FB6F894DEBF0FBE34 -:10900000CDBF88E0EAE6F3E0DE01199601900D920B -:109010008A95E1F788E08E010F5F1F4FF801982FC6 -:1090200011929A95E9F791E09A8393E09B8396E1F8 -:109030009C839CE19D838E83AE01475F5F4F61E01F -:1090400080E09AE10E94DA42A80162E080E09AE1C1 -:109050000E94DA4260960FB6F894DEBF0FBECDBF15 -:10906000DF91CF911F910F910895CF93DF93CDB7EB -:10907000DEB728970FB6F894DEBF0FBECDBF88E0ED -:10908000E2E2F3E0DE01119601900D928A95E1F79C -:10909000AE014F5F5F4F61E080E09AE10E94DA42EB -:1090A00028960FB6F894DEBF0FBECDBFDF91CF91EB -:1090B000089580E09AE10C9446404AE050E0BC01FB -:1090C00080E09AE10D94FEBACF93DF93EA01462F38 -:1090D000682F80E09AE10E9452404AE050E0BE01D1 -:1090E00080E09AE1DF91CF910D94FEBACF93DF93A8 -:1090F000EA01462F682F80E09AE10E945240BE01AB -:1091000080E09AE1DF91CF910D9457BA8EEF9FE006 -:109110000F94EDCC823028F48093460A1092EA191D -:10912000089581E08093460A8093EA1908951F9379 -:10913000CF93DF93EC01FB01608111810F94FFCC91 -:10914000612FCE010196DF91CF911F910D94FFCC3D -:10915000FF920F931F93CF93DF938C01EB010F943A -:10916000EDCCF82EC80101960F94EDCCF8828983DE -:10917000DF91CF911F910F91FF90089561E080ECF6 -:109180009FE00F94FFCC60E08FEB9FE00F94FFCC4B -:1091900060E08EEB9FE00F94FFCC60E08DEB9FE0F2 -:1091A0000F94FFCC60E08CEB9FE00F94FFCC10920B -:1091B000A11A1092A01A10929C1A1092A31A10923F -:1091C000A21A10929D1A1092A51A1092A41A109227 -:1091D0009E1A1092A71A1092A61A10929F1A08951A -:1091E000EF92FF920F931F93CF93DF931F92CDB710 -:1091F000DEB77B018C01061B170B460FC701800FE2 -:10920000911F49830F94EDCCF70181937F01498130 -:109210004E13F4CF0F90DF91CF911F910F91FF90DC -:10922000EF9008950F93CF93DF931F92CDB7DEB7E2 -:1092300041E0BE016F5F7F4F89E09FE0D1DF898110 -:10924000882321F0813029F482E001C081E0898304 -:1092500001C01982698189E09FE00F94FFCC81E011 -:109260008093871A01E021E048E050E060E070E080 -:1092700088E491E00F947B3D0F90DF91CF910F91A7 -:109280000895F3CE8ECE6EEF8EEF9FE00D94FFCC5F -:1092900081E08093DC0208950F931F93CF93809118 -:1092A000811A882371F10E941FC7C82F0F9498B7A5 -:1092B00000917C0A10917D0A20917E0A30917F0AEC -:1092C000601B710B820B930B0F940FC12FE632E1E1 -:1092D00043E85AE30F9444C3CC2329F020E030E064 -:1092E00040E752E404C020E030E046E154E40F944B -:1092F00072C218161CF41092DC0203C081E0809345 -:10930000DC02CF911F910F9108958093EC19109278 -:10931000EB190895E4E5FAE101900020E9F73197AF -:10932000E455FA411E161F0634F01092681A82E0C6 -:109330008093D402089580E2E431F105B4F7DF01AF -:10934000AC5AB54E8C933196F7CF2091691A211102 -:1093500008C044E150E0BC0184E59AE10F945FC984 -:10936000D9CF08952091691A211108C044E150E035 -:10937000BC0184E59AE10F94D2C8CCCF089561E096 -:1093800080EA9CE50E94BCC581E080933A0A82E0B5 -:1093900090E09093380A8093370AE091460AF0E013 -:1093A000EE0FFF1FEF5AF74B85919491DBDFD9D871 -:1093B00083E08093D4020895D5DF81E08093691A19 -:1093C000D0C81092691A08958091691A08950F9370 -:1093D0001F93CF93C0910301C2FBCC27C0F981E05A -:1093E000C8278091030181FFC2608091D302882346 -:1093F00009F4C4C08091000186FD89C00F9498B71C -:10940000605D7A488F4F9F4F6093E2197093E31924 -:109410008093E4199093E5190F9498B700916C1A12 -:1094200010916D1A20916E1A30916F1A0617170756 -:109430002807390708F0A6C00F9498B768537F4FE4 -:109440008F4F9F4F60936C1A70936D1A80936E1AB2 -:1094500090936F1A80916B1A81112EC08091741AAB -:1094600081112AC08091D5029091D60221E08838DE -:109470009207A1F09093F3198093F2198091F91952 -:109480009091FA19A091FB19B091FC198093F519EC -:109490009093F619A093F719B093F8190F9498B711 -:1094A0006093701A7093711A8093721A9093731A62 -:1094B00081E080936B1A66C00F9498B70091701A80 -:1094C0001091711A2091721A3091731A601B710BEE -:1094D000820B930B693E73408105910508F452C0DD -:1094E00081E08093741A80E090E0A0E8BFE380936D -:1094F000E6199093E719A093E819B093E91901E0F0 -:1095000021E040E050E0BA0188E891E02BC0809172 -:109510006B1A882381F10F9498B768537F4F8F4F50 -:109520009F4F60936C1A70936D1A80936E1A90938C -:109530006F1A2091741A8091D5029091D602211150 -:1095400014C088589140E9F44091F5195091F619EA -:109550006091F7197091F81901E021E08091F219FA -:109560009091F3190F947B3D0DC08858914051F4B0 -:109570000F946C3D07C01092741A04C080910001D2 -:1095800086FFC460C093FF198091FF19817090918C -:10959000FF1991FD82609091FD19891721F18130A9 -:1095A000F1F028F0823089F08330A1F01CC09130B6 -:1095B00021F49091A81A9F5F05C09230A1F4909178 -:1095C000A81A91509093A81A0EC0992391F3933042 -:1095D00051F4F5CF923069F3913029F4F0CF933004 -:1095E00041F3992361F38093FD19CF911F910F915E -:1095F00008950F94A542E4E0F1E080818B7F8083A1 -:1096000080818D7F80839FB7F894E5E0F1E08081D1 -:10961000846080839FBF9FB7F8948081826080833D -:109620009FBFE1E0F1E080818F7B80839FB7F8945A -:10963000E2E0F1E08081806480839FBF60E08FE0A2 -:109640000F9483B99FB7F894E5E0F1E080818160E1 -:1096500080839FBF80910301809581708093F4196E -:10966000B6DE1092A81A089581E008959091FF192E -:1096700092FB882780F992FD10926B1A08958091D1 -:1096800001028F93809100028F93809103028F9348 -:10969000809102028F9380918A028F938091890238 -:1096A0008F9386E89EE59F938F9385E899E09F933B -:1096B0008F930F9488C9DADF2DB73EB7265F3F4FEF -:1096C0000FB6F8943EBF0FBE2DBF882321F00F9434 -:1096D0006C3D0D94B14208958F929F92AF92BF92CC -:1096E000CF92DF92EF92FF926091651970916619A7 -:1096F000882777FD8095982F0F9411C120E030ECDA -:109700004FE756E40F9476C020E030E040EA50E4A2 -:109710000F9444C327ED30E344E45EE30F9476C036 -:109720004B015C010F94DEC06B017C01882777FD43 -:109730008095982F0F9411C19B01AC01C501B40114 -:109740000F9495BF9F7720E030E040E251E40F9402 -:1097500044C30F94DEC07F936F93DF92CF928DE668 -:109760009EE59F938F9385E899E09F938F930F9445 -:1097700088C97CDF2DB73EB7285F3F4F0FB6F894FE -:109780003EBF0FBE2DBF882361F00F946C3DFF904C -:10979000EF90DF90CF90BF90AF909F908F900D94FF -:1097A000B142FF90EF90DF90CF90BF90AF909F902D -:1097B0008F9008951F93CF93DF931F9211E01F9313 -:1097C00060915D1970915E1980915F199091601997 -:1097D0000F94DEC07F936F931F921F936091731954 -:1097E0007091741980917519909176190F94DEC05B -:1097F0007F936F9384E49EE59F938F93C5E8D9E0B0 -:10980000DF93CF930F9488C91F921F9360916D19B6 -:1098100070916E1980916F19909170190F94DEC03C -:109820007F936F931F921F936091671970916819CE -:109830008091691990916A190F94DEC07F936F939C -:109840008BE19EE59F938F93DF93CF930F9488C90D -:109850000DDF2DB73EB7285E3F4F0FB6F8943EBFE1 -:109860000FBE2DBF882339F00F946C3DDF91CF914F -:109870001F910D94B142DF91CF911F910895CF9325 -:10988000DF938BE59FE00F94FACCEC018DE59FE030 -:109890000F94FACCDF93CF939F938F9385EF9DE541 -:1098A0009F938F9385E899E09F938F930F9488C936 -:1098B000DDDE2DB73EB7285F3F4F0FB6F8943EBFB1 -:1098C0000FBE2DBF882331F00F946C3DDF91CF91F7 -:1098D0000D94B142DF91CF91089584E090E0909390 -:1098E0001802809317020F94112A81E00E94CF6022 -:1098F000BDDE8823C1F3BADE8111FDCF6AE070E0DE -:1099000080E090E00F94C7B7B1DE8111FDCF82E017 -:1099100090E090931802809317020895DF92EF92DF -:10992000FF920F931F93CF93DF93CDB7DEB72897A6 -:109930000FB6F894DEBF0FBECDBF84E696E09A83E3 -:1099400089838DE696E09C838B8388E796E09E83EF -:109950008D8386E896E098878F83E090A81AFF248D -:10996000E7FCF094A6DB40E060E080E09AE10E9432 -:10997000524062E676E080E09AE10F9457BAD12C2B -:1099800000E010E0402F61E080E09AE10E94524048 -:10999000E091D819F091D919E00FF11FEE0FFF1FD8 -:1099A00081E090E08C0F9D1FE80FF91F60817181AD -:1099B00080E09AE10F9457BA0F5F1F4F04301105F2 -:1099C00009F70F94112A81E00E94CF602091A81A14 -:1099D000332727FD3095C701821B930B97FF03C0E8 -:1099E00091958195910905970CF46FC02E153F054F -:1099F0000CF4DA94E216F3060CF4D39493E09D157C -:109A00006CF48091D8199091D91997FF7FC0019675 -:109A10009093D9198093D8194CDB78C0D7FE0EC02B -:109A20008091D8199091D9191816190634F4019714 -:109A30009093D9198093D8193CDBD12C40E060E099 -:109A400080E09AE10E94524062ED77E080E09AE186 -:109A50000F9457BA41E060E080E09AE10E945240E2 -:109A600062ED77E080E09AE10F9457BA42E060E05F -:109A700080E09AE10E94524062ED77E080E09AE156 -:109A80000F9457BA43E060E080E09AE10E945240B0 -:109A900062ED77E080E09AE10F9457BA4D2D60E0D7 -:109AA00080E09AE10E94524062E676E080E09AE12E -:109AB0000F9457BAE090A81AFF24E7FCF09464E6EC -:109AC00070E080E090E00F94C7B7D0DD882309F400 -:109AD00057CFCCDD8111FDCF6AE070E080E090E0EF -:109AE0000F94C7B7C3DD8111FDCF8091D8198D0DBB -:109AF00028960FB6F894DEBF0FBECDBFDF91CF9191 -:109B00001F910F91FF90EF90DF90089513E0D12EF9 -:109B100095CFFC01808190E02AE030E0B9010F94FC -:109B200033C5482FCB01B9010F9433C5805D8093B5 -:109B3000DA19405D4093DB191092DC198AED99E146 -:109B4000089520E030E040E251E4FC016081718141 -:109B5000828193810F9444C30F94DEC077FD02C0CD -:109B60002BE201C02DE22093DA199B0177FF04C09C -:109B700022273327261B370BC90168EE73E00F94A9 -:109B800033C5CB01EAE0F0E0BF010F9433C5805D3F -:109B90008093DB19C90164E670E00F9433C5CB01F3 -:109BA000BF010F9433C5805D8093DC19C901BF01EB -:109BB0000F9433C5282FCB01BF010F9433C5805DAF -:109BC0008093DD198EE28093DE19205D2093DF19EA -:109BD0001092E0198AED99E108958F929F92AF92C9 -:109BE000BF92CF92DF92EF92FF92CF9320E030E0CE -:109BF00048EC52E4FC0160817181828193810F9471 -:109C000044C30F94DEC06B017C0197FD12C020E1BC -:109C100037E240E050E00F9468C5CA01B9012AE07C -:109C200030E040E050E00F9468C5605D6093DA1961 -:109C300003C08DE28093DA19F7FE08C0F094E09437 -:109C4000D094C094C11CD11CE11CF11CC701B60109 -:109C500028EE33E040E050E00F9468C59AE0892E8A -:109C6000912CA12CB12CCA01B901A50194010F942A -:109C700068C5605D6093DB19C701B60124E630E07A -:109C800040E050E00F9468C5CA01B901A5019401F4 -:109C90000F9468C5605D6093DC198EE28093DD19D6 -:109CA000C701B601A50194010F9468C5C62FCA016A -:109CB000B901A50194010F9468C5605D6093DE1938 -:109CC000C05DC093DF191092E0198AED99E1CF9140 -:109CD000FF90EF90DF90CF90BF90AF909F908F90CC -:109CE00008958F929F92AF92BF92CF92DF92EF92A0 -:109CF000FF92CF93FC01C080D180E280F38020E00E -:109D000030E0A901C701B6010F9472C218161CF405 -:109D1000C701B60103C0C701B60190580F94DEC059 -:109D20006B017C016031F7E27F078105910584F0CA -:109D300020E137E240E050E00F9468C5CA01B90164 -:109D40002AE030E040E050E00F9468C5605D01C05B -:109D500060E26093DA1988EEC81683E0D806E10461 -:109D6000F10494F0C701B60128EE33E040E050E082 -:109D70000F9468C5CA01B9012AE030E040E050E024 -:109D80000F9468C5605D01C060E26093DB19E4E692 -:109D9000CE16D104E104F10494F0C701B60124E623 -:109DA00030E040E050E00F9468C5CA01B9012AE0F4 -:109DB00030E040E050E00F9468C5605D01C060E3B2 -:109DC0006093DC198EE28093DD192AE0822E912CBB -:109DD000A12CB12CC701B601A50194010F9468C54F -:109DE000C62FCA01B901A50194010F9468C5605D31 -:109DF0006093DE19C05DC093DF198AED99E1CF91C0 -:109E0000FF90EF90DF90CF90BF90AF909F908F909A -:109E100008958F929F92AF92BF92CF92DF92EF926E -:109E2000FF92CF9320E030E04AE754E4FC016081E8 -:109E30007181828193810F9444C30F94DEC06B01C2 -:109E40007C0197FD12C028EE33E040E050E00F9413 -:109E500068C5CA01B9012AE030E040E050E00F9443 -:109E600068C5605D6093DA1903C08DE28093DA19EA -:109E7000F7FE08C0F094E094D094C094C11CD11CAB -:109E8000E11CF11C8EE28093DB19C701B60124E6C8 -:109E900030E040E050E00F9468C56AE0862E912CD7 -:109EA000A12CB12CCA01B901A50194010F9468C578 -:109EB000605D6093DC19C701B601A50194010F94A0 -:109EC00068C5C62FCA01B901A50194010F9468C5E0 -:109ED000605D6093DD19C05DC093DE191092DF19DB -:109EE0008AED99E1CF91FF90EF90DF90CF90BF90F6 -:109EF000AF909F908F9008958F929F92AF92BF9254 -:109F0000CF92DF92EF92FF92CF9320E030E04AE7CA -:109F100054E4FC0160817181828193810F9444C378 -:109F20000F94DEC097FD02C020E201C02DE2209315 -:109F3000DA196B017C0197FF08C0F094E094D0948B -:109F4000C094C11CD11CE11CF11CC701B60128EE54 -:109F500033E040E050E00F9468C5EAE08E2E912C8B -:109F6000A12CB12CCA01B901A50194010F9468C5B7 -:109F7000605D6093DB198EE28093DC19C701B60146 -:109F800024E630E040E050E00F9468C5CA01B90112 -:109F9000A50194010F9468C5605D6093DD19C70148 -:109FA000B601A50194010F9468C5C62FCA01B90175 -:109FB000A50194010F9468C5605D6093DE19C05DD2 -:109FC000C093DF191092E0198AED99E1CF91FF90CB -:109FD000EF90DF90CF90BF90AF909F908F900895BB -:109FE0008F929F92AF92BF92CF92DF92EF92FF92A9 -:109FF000FC0180809180A280B38020E030E048ECBA -:10A0000052E4C501B4010F9444C36B017C0120E00C -:10A0100030E0A9010F9472C218161CF4C701B601F2 -:10A0200003C0C701B60190580F94DEC06B017C01DC -:10A0300020E030E0A901C501B4010F946FC087FF93 -:10A0400012C08DE28093DA19C701B60128EE33E021 -:10A0500040E050E00F9468C5CA01B9012AE030E041 -:10A0600040E050E036C0C701B60120E137E240E0F1 -:10A0700050E00F9468C5AAE08A2E912CA12CB12C37 -:10A08000CA01B901A50194010F9468C5662391F036 -:10A09000605D6093DA19C701B60128EE33E040E055 -:10A0A00050E00F9468C5CA01B901A50194010F944D -:10A0B00068C513C080E28093DA19C701B60128EEA3 -:10A0C00033E040E050E00F9468C5CA01B901A50132 -:10A0D00094010F9468C5662311F0605D01C060E2D1 -:10A0E0006093DB19C701B60124E630E040E050E0A0 -:10A0F0000F9468C5FAE08F2E912CA12CB12CCA01C7 -:10A10000B901A50194010F9468C5605D6093DC19E5 -:10A11000C701B601A50194010F9468C5662381F0BB -:10A12000605D6093DF19CA01B901A50194010F9424 -:10A1300068C5605D6093DE198EE28093DD1915C0FD -:10A14000CA01B901A50194010F9468C5662329F0DD -:10A15000605D6093DE198EE203C080E28093DE19B9 -:10A160008093DD1980E28093DF191092E0198AED67 -:10A1700099E1FF90EF90DF90CF90BF90AF909F90CC -:10A180008F900895FC012081318137FF07C08DE257 -:10A190008093DA1931952195310914C0243631059F -:10A1A00074F0C90164E670E00F9433C5CB016AE036 -:10A1B00070E00F9433C5805D8093DA1906C080E2A9 -:10A1C0008093DA192A30310564F0EAE0F0E0C90141 -:10A1D000BF010F9433C5CB01BF010F9433C5805D20 -:10A1E00001C080E28093DB19C9016AE070E00F943E -:10A1F00033C5805D8093DC191092DD198AED99E1F9 -:10A2000008951F93CF93DF931F921F92CDB7DEB7B0 -:10A2100040E060E080E09AE10E9452406FE876E022 -:10A2200080E09AE10F9457BA84E69FE00F94EDCC5A -:10A23000182F41E060E080E09AE10E94524064EA19 -:10A2400076E080E09AE10F9457BA41E061E180E066 -:10A250009AE10E945240812F90E09A838983CE0137 -:10A26000019690DFBC0180E09AE10F9457BA86E630 -:10A270009FE00F94EDCC182F42E060E080E09AE17F -:10A280000E94524069EB76E080E09AE10F9457BA61 -:10A2900042E061E180E09AE10E945240812F90E02B -:10A2A0009A838983CE0101966DDFBC0180E09AE13B -:10A2B0000F9457BA85E69FE00F94EDCC182F43E03A -:10A2C00060E080E09AE10E9452406EEC76E080E02F -:10A2D0009AE10F9457BA43E061E180E09AE10E946D -:10A2E0005240812F90E09A838983CE0101964ADF04 -:10A2F000BC0180E09AE10F9457BAB8D9882321F0C5 -:10A300000F946C3D0F94B1420F900F90DF91CF915D -:10A310001F9108956F927F929F92BF92CF92DF928A -:10A32000EF92FF920F931F93CF93DF9380919B1A2D -:10A3300081115EC081E080939B1A8FEB9FE00F94A8 -:10A34000EDCC082F282F332727FD30953093A11A05 -:10A350002093A01A80939C1A8EEB9FE00F94EDCC73 -:10A36000182F282F332727FD30953093A31A2093D9 -:10A37000A21A80939D1A8DEB9FE00F94EDCCD82FFD -:10A38000282F332727FD30953093A51A2093A41A40 -:10A3900080939E1A8CEB9FE00F94EDCCC82F282F52 -:10A3A000332727FD30953093A71A2093A61A809360 -:10A3B0009F1A80EC9FE00F94EDCC813009F0A4C28D -:10A3C0000E5C053608F0A0C21E5C153608F09CC273 -:10A3D000DE5CD53608F098C2CE5CC53608F094C273 -:10A3E00081E08093D40261E080EC9FE00F94FFCC89 -:10A3F0006091A01A7091A11A80919C1A992787FDEB -:10A4000090958617970731F060939C1A8FEB9FE029 -:10A410000F94FFCC6091A21A7091A31A80919D1A9B -:10A42000992787FD90958617970731F060939D1ABD -:10A430008EEB9FE00F94FFCC6091A41A7091A51A47 -:10A4400080919E1A992787FD90958617970731F07E -:10A4500060939E1A8DEB9FE00F94FFCC6091A61A3B -:10A460007091A71A80919F1A992787FD909586175A -:10A47000970731F060939F1A8CEB9FE00F94FFCC0D -:10A480008091F9199091FA19A091FB19B091FC19DA -:10A4900081309048A105B10540F01092F919109251 -:10A4A000FA191092FB191092FC198091F9199091E8 -:10A4B000FA19A091FB19B091FC19B695A79597953B -:10A4C00087954091FE1950E060E070E08417950791 -:10A4D000A607B70710F48093FE191091FE1990900B -:10A4E000FF1992FA992490F8B12CE7E36E2EE9E473 -:10A4F0007E2EFBE0CF2ED12CE12CF12C01E08091BF -:10A50000F9199091FA19A091FB19B091FC19111148 -:10A510003AC02091D4022223A1F0E091460AF0E053 -:10A52000EE0FFF1FE159F94B6591749123E00297FB -:10A53000A105B10510F443E001C040E28B2D0F945A -:10A54000DC3B992009F49AC18091F9199091FA198C -:10A55000A091FB19B091FC190297A105B10508F073 -:10A560008DC10F946C3D8CE591E0DF91CF911F91EF -:10A570000F91FF90EF90DF90CF90BF909F907F90D2 -:10A580006F900D94273E113009F04AC02091D402FB -:10A59000222301F1E091460AF0E0EE0FFF1FEF5B8E -:10A5A000F64BC591D491B695A79597958795019748 -:10A5B000A105B10531F480EA9AE1E4DD9C014EE3A6 -:10A5C00005C080EA9AE1DEDD9C0140E2BE018B2DF0 -:10A5D0000F94133C992009F451C18091F91990917D -:10A5E000FA19A091FB19B091FC19B695A79597950A -:10A5F00087950197A105B10509F040C10F946C3D05 -:10A60000E091460AF0E0EE0FFF1FEF5BF64B8591FD -:10A61000949122E330E04EEC5FEF60EA7AE14CC0C7 -:10A62000123009F057C02091D402222301F1E091A9 -:10A63000460AF0E0EE0FFF1FED5CF64BC591D4919A -:10A64000B695A795979587950297A105B10531F421 -:10A6500082EA9AE197DD9C014EE305C082EA9AE125 -:10A6600091DD9C0140E2BE018B2D0F94133C99209B -:10A6700009F404C18091F9199091FA19A091FB197C -:10A68000B091FC19B695A795979587950297A10566 -:10A69000B10509F0F3C00F946C3DE091460AF0E07B -:10A6A000EE0FFF1FED5CF64B8591949122E330E0B5 -:10A6B0004EEC5FEF62EA7AE1DF91CF911F910F914B -:10A6C000FF90EF90DF90CF90BF909F907F906F9022 -:10A6D0000D94C43D133009F04AC02091D4022223C6 -:10A6E00001F1E091460AF0E0EE0FFF1FEB5BF64B45 -:10A6F000C591D491B695A795979587950397A10590 -:10A70000B10531F484EA9AE13DDD9C014EE305C0D8 -:10A7100084EA9AE137DD9C0140E2BE018B2D0F9463 -:10A72000133C992009F4AAC08091F9199091FA1963 -:10A73000A091FB19B091FC19B695A79597958795AF -:10A740000397A105B10509F099C00F946C3DE09104 -:10A75000460AF0E0EE0FFF1FEB5BF64B85919491FC -:10A7600022E330E04EEC5FEF64EA7AE1A5CF1430EB -:10A7700009F04AC02091D402222301F1E091460A57 -:10A78000F0E0EE0FFF1FE75CF64BC591D491B69554 -:10A79000A795979587950497A105B10531F486EAA9 -:10A7A0009AE1F0DC9C014EE305C086EA9AE1EADC1E -:10A7B0009C0140E2BE018B2D0F94133C992009F4BB -:10A7C0005DC08091F9199091FA19A091FB19B0918F -:10A7D000FC19B695A795979587950497A105B1059E -:10A7E00009F04CC00F946C3DE091460AF0E0EE0F8A -:10A7F000FF1FE75CF64B8591949122E330E04EEC2D -:10A800005FEF66EA7AE158CF1530C1F52091D402A6 -:10A81000222391F0F30165917491B695A7959795D0 -:10A82000879520E20597A105B10511F44EE301C01B -:10A8300040E28B2D0F94DC3B992001F18091F919B6 -:10A840009091FA19A091FB19B091FC19B695A795B2 -:10A85000979587950597A105B10581F40F946C3DF7 -:10A86000DF91CF911F910F91FF90EF90DF90CF90EC -:10A87000BF909F907F906F900D949E3D8091F919AD -:10A880009091FA19A091FB19B091FC190C97A105B0 -:10A89000B10540F0C092F919D092FA19E092FB1973 -:10A8A000F092FC194091F9195091FA196091FB1935 -:10A8B0007091FC1976956795579547958091FE198B -:10A8C00090E00396242F30E08217930754F48DEF25 -:10A8D000840F8093FE190093D4021CEF140FBB2445 -:10A8E000BA94B3941F5F83E08B1508F008CEDF9114 -:10A8F000CF911F910F91FF90EF90DF90CF90BF907D -:10A900009F907F906F9008951092A11A1092A01AB4 -:10A910001092A31A1092A21A1092A51A1092A41AB9 -:10A920001092A71A1092A61A5BCD8F929F92AF92A7 -:10A93000BF92CF92DF92EF92FF920F931F93CF932C -:10A94000DF938091F9199091FA19A091FB19B091B8 -:10A95000FC1981309048A105B10540F01092F91919 -:10A960001092FA191092FB191092FC198091F919A2 -:10A970009091FA19A091FB19B091FC19B695A79581 -:10A98000979587954091FE1950E060E070E084173C -:10A990009507A607B70710F48093FE19A090FE193B -:10A9A0009090FF1992FA992490F8B12C09E419E4D7 -:10A9B00047E0C42ED12CE12CF12C88248394809183 -:10A9C000F9199091FA19A091FB19B091FC19A110F5 -:10A9D0003AC02091D4022223A1F0E091460AF0E08F -:10A9E000EE0FFF1FE159F94B6591749123E0029737 -:10A9F000A105B10510F443E001C040E28B2D0F9496 -:10AA0000DC3B992009F406C18091F9199091FA195B -:10AA1000A091FB19B091FC190297A105B10508F0AE -:10AA2000F9C00F946C3D88E491E0DF91CF911F91C4 -:10AA30000F91FF90EF90DF90CF90BF90AF909F90DD -:10AA40008F900D94273E21E0A2124AC02091D4029B -:10AA5000222301F1E091460AF0E0EE0FFF1FEF57CD -:10AA6000F84BC591D491B695A79597958795019781 -:10AA7000A105B10531F48BE799E184DB9C014EE33C -:10AA800005C08BE799E17EDB9C0140E2BE018B2D86 -:10AA90000F94133C992009F4BDC08091F91990914D -:10AAA000FA19A091FB19B091FC19B695A795979545 -:10AAB00087950197A105B10509F0ACC00F946C3DD5 -:10AAC000E091460AF0E0EE0FFF1FEF57F84B85913B -:10AAD000949127E231E040E050E06BE779E18CC0EF -:10AAE00022E0A2123FC02091D4022223D1F0F8012B -:10AAF000C591D491B695A795979587950297A1058D -:10AB0000B10531F489E799E13DDB9C014EE305C0D5 -:10AB100089E799E137DB9C0140E2BE018B2D0F9460 -:10AB2000133C992009F476C08091F9199091FA1993 -:10AB3000A091FB19B091FC19B695A79597958795AB -:10AB40000297A105B10509F065C00F946C3DE9E4D9 -:10AB5000F9E4859194912AE730E040E050E069E71C -:10AB600079E14AC023E0A21255C02091D4022223E9 -:10AB700001F1E091460AF0E0EE0FFF1FE758F74BB6 -:10AB8000C591D491B695A795979587950397A105FB -:10AB9000B10531F480EE99E0F5DA9C014EE305C091 -:10ABA00080EE99E0EFDA9C0140E2BE018B2D0F941C -:10ABB000133C992079F18091F9199091FA19A0919B -:10ABC000FB19B091FC19B695A795979587950397B2 -:10ABD000A105B105F9F40F946C3DE091460AF0E04F -:10ABE000EE0FFF1FE758F74B859194912FEF30E060 -:10ABF00040E050E060EE79E0DF91CF911F910F913E -:10AC0000FF90EF90DF90CF90BF90AF909F908F908C -:10AC10000D94C43D8091F9199091FA19A091FB19F6 -:10AC2000B091FC190897A105B10540F0C092F9193F -:10AC3000D092FA19E092FB19F092FC194091F9199F -:10AC40005091FA196091FB197091FC1976956795EE -:10AC5000579547958091FE1990E00396242F30E098 -:10AC6000821793075CF48DEF840F8093FE19809216 -:10AC7000D402DCEFAD2EA40EBB24BA94B394A394FB -:10AC800083E08B1508F09BCEDF91CF911F910F9140 -:10AC9000FF90EF90DF90CF90BF90AF909F908F90FC -:10ACA00008958F929F92AF92BF92CF92DF92EF92D0 -:10ACB000FF920F931F93CF93DF931F921F92CDB7F5 -:10ACC000DEB78830910509F449C0C4F48430910599 -:10ACD00009F44DC064F48130910509F479C18230E2 -:10ACE000910509F49BC1892B09F0AEC343C086309E -:10ACF0009105B9F1CCF100E217E069C28A359105FE -:10AD000021F164F48531910531F18631910501F12C -:10AD1000449709F099C300E117E0A0C28C35910572 -:10AD200071F084F08D35910539F08336910509F085 -:10AD30008BC304E417E055C303EE16E03AC30CEEF0 -:10AD400016E01FC305EF16E004C30EEF16E0EAC2DB -:10AD500007E017E0CAC200E117E0A7C202E117E06E -:10AD600057C209E217E016C202E317E0F5C10BE390 -:10AD700017E0D4C18091820A00E117E0882309F42A -:10AD800005C1F80181918F01882319F00F94AD431B -:10AD9000F8CF84E090E00F94C1430F94E0430EE4B9 -:10ADA00017E0F80181918F01882319F00F94AD43CA -:10ADB000F8CF40913F0A5091400A6091410A70914A -:10ADC000420A2AE030E084E998E00E94E94404E580 -:10ADD00017E0F80181918F01882319F00F94AD439A -:10ADE000F8CF8091DE0C882319F18091880D909125 -:10ADF000890DA0918A0DB0918B0D0097A105B10529 -:10AE0000B9F0BC01CD016D597F4F8F4F9F4F24E6A4 -:10AE100030E040E050E00F9446C56091900D709195 -:10AE2000910D8091920D9091930D0F9446C501C0A4 -:10AE300020E030E03A832983CE010196A3D98C012A -:10AE4000F80181918F01882319F00F94AD43F8CF59 -:10AE50000BE517E0F80181918F01882319F00F9419 -:10AE6000AD43F8CF88E592E08DD98C01F80181914E -:10AE70008F01882319F00F94AD43F8CF02E617E055 -:10AE8000F80181918F01882319F00F94AD43F8CF19 -:10AE90000DE11AE1F80181918F01882319F00F94D7 -:10AEA000AD43F8CF09E617E0F80181918F018823BF -:10AEB00019F00F94AD43F8CF8091A0099091A109AA -:10AEC000A091A209B091A309892B8A2B8B2B49F160 -:10AED0000F9498B7E8EE8E2EE3E09E2EA12CB12CB5 -:10AEE000A50194010F9446C569017A016091A009FA -:10AEF0007091A1098091A2099091A309A5019401E3 -:10AF00000F9446C5C21AD30AE40AF50A2AE030E0D3 -:10AF1000B701A60184E998E00E94E94400E717E040 -:10AF200009C04AE050E060E070E084E998E00E94E7 -:10AF30002845F4CFF80181918F01882319F00F94EF -:10AF4000AD43F8CF05E714E0F80181918F01882324 -:10AF500019F00F94AD43F8CF09E317E0F8018191A0 -:10AF60008F01882319F00F94AD43F8CF08E717E05D -:10AF7000F80181918F01882319F00F94AD43F8CF28 -:10AF80008AE00F94AD4384E090E01DC0F801819108 -:10AF90008F01882319F00F94AD43F8CF81E090E042 -:10AFA0000F94C1430F94E04308E717E0F801819143 -:10AFB0008F01882319F00F94AD43F8CF8AE00F94E6 -:10AFC000AD4381E090E09093440A8093430A3CC2F1 -:10AFD00082E090E090937E1A80937D1A00E117E062 -:10AFE000F80181918F01882319F00F94AD43F8CFB8 -:10AFF00082E090E00F94C1430F94E04308E717E02C -:10B00000F80181918F01882319F00F94AD43F8CF97 -:10B010008AE00F94AD4382E090E079C083E090E055 -:10B0200090937E1A80937D1A00E117E0F8018191D8 -:10B030008F01882319F00F94AD43F8CF83E090E09F -:10B040000F94C1430F94E04308E717E0F8018191A2 -:10B050008F01882319F00F94AD43F8CF8AE00F9445 -:10B06000AD4383E090E09093440A8093430A81E0EB -:10B0700090E09093DE028093DD028091820A81113C -:10B0800003C000E117E026C084E090E090937E1AB0 -:10B0900080937D1A00E117E0F80181918F018823E8 -:10B0A00019F00F94AD43F8CF84E090E00F94C143C2 -:10B0B0000F94E04308E717E0F80181918F0188239E -:10B0C00019F00F94AD43F8CF8AE00F94AD4384E0BC -:10B0D00090E01DC0F80181918F01882319F00F9431 -:10B0E000AD43F8CF83E090E00F94C1430F94E04369 -:10B0F00008E717E0F80181918F01882319F00F9478 -:10B10000AD43F8CF8AE00F94AD4383E090E0909395 -:10B11000440A8093430A81E090E0C2C0F801819123 -:10B120008F01882319F00F94AD43F8CF8AE00F9474 -:10B13000AD438091430A9091440A0F94C1430F9408 -:10B14000E04308E717E0F80181918F01882309F4B3 -:10B150007FC00F94AD43F7CFF80181918F01882311 -:10B1600019F00F94AD43F8CF8AE00F94AD4380916E -:10B17000430A9091440A0F94C1430F94E04308E7B7 -:10B1800017E0F80181918F01882309F461C00F94C1 -:10B19000AD43F7CFF80181918F01882319F00F9407 -:10B1A000AD43F8CF8AE00F94AD430F94E04308E736 -:10B1B00017E0F80181918F01882319F00F94AD43B6 -:10B1C000F8CF8AE00F94AD4388E090E01CC0F8010E -:10B1D00081918F01882319F00F94AD43F8CF8AE055 -:10B1E0000F94AD430F94E04308E717E0F801819115 -:10B1F0008F01882319F00F94AD43F8CF8AE00F94A4 -:10B20000AD4389E090E09093440A8093430A23C0C1 -:10B21000F80181918F01882319F00F94AD43F8CF85 -:10B220001092440A1092430A60917F1A7091801A1A -:10B230004AE050E084E998E00E94284507E717E0DB -:10B24000F80181918F01882319F00F94AD43F8CF55 -:10B250008AE00F94AD4382E090E022C0F801819132 -:10B260008F01882319F00F94AD43F8CF8AE00F9433 -:10B27000AD438091430A9091440A0F94C1430F94C7 -:10B28000E04308E717E0F80181918F01882319F066 -:10B290000F94AD43F8CF8AE00F94AD4385E090E082 -:10B2A0009093DE028093DD02CFC0F80181918F017F -:10B2B000882319F00F94AD43F8CF0F94FD430F94FA -:10B2C000E0438091430A9091440A0F94C14308E7F8 -:10B2D00017E0F80181918F01882319F00F94AD4395 -:10B2E000F8CF8AE00F94AD43AFC0F80181918F0190 -:10B2F000882319F00F94AD43F8CF8AE00F94AD4343 -:10B300000F94E04308E717E0F80181918F0188234B -:10B3100019F00F94AD43F8CF8AE00F94AD4385E068 -:10B3200090E051CEF80181918F01882319F00F949C -:10B33000AD43F8CF8AE00F94AD430F94E04308E7A4 -:10B3400017E0F80181918F01882359F20F94AD43E2 -:10B35000F8CFF80181918F01882319F00F94AD4344 -:10B36000F8CF8AE00F94AD430F94E04308E717E06D -:10B37000F80181918F01882309F4B3CF0F94AD4375 -:10B38000F7CFF80181918F01882319F00F94AD4315 -:10B39000F8CF8AE00F94AD430F94E04308E717E03D -:10B3A000F80181918F01882309F49BCF0F94AD435D -:10B3B000F7CFF80181918F01882319F00F94AD43E5 -:10B3C000F8CF8AE00F94AD430F94E04308E717E00D -:10B3D000F80181918F01882309F483CF0F94AD4345 -:10B3E000F7CFF80181918F01882319F00F94AD43B5 -:10B3F000F8CF0F94FD430AE117E0F80181918F0126 -:10B40000882319F00F94AD43F8CF60917F1A7091A3 -:10B41000801A4AE050E084E998E00E94284509E358 -:10B4200017E0F80181918F01882319F00F94AD4343 -:10B43000F8CF08E717E0F80181918F01882309F41C -:10B4400050CF0F94AD43F7CF0F900F90DF91CF9176 -:10B450001F910F91FF90EF90DF90CF90BF90AF9032 -:10B460009F908F900895BF92CF92DF92EF92FF92BC -:10B470000F931F93CF93DF93C0917F1AD091801ABF -:10B480000F94594840E060E080E09AE10E94524009 -:10B490006AE777E080E09AE10F9457BAB12CF4E6BE -:10B4A000EF2EF12CAAE0CA2ED12C2091A81A422FFF -:10B4B000552741950CF45095CA0157FF03C091954B -:10B4C0008195910903970CF444C027FF1FC051E0F8 -:10B4D000B51659F082E0B81681F0B11038C0C43604 -:10B4E000D105ACF1C456D10932C0CE01B7010F94D9 -:10B4F00033C50A9764F12A972AC0CE01B6010F948A -:10B5000033C5181619061CF5219721C02223F9F01E -:10B5100041E0B41661F052E0B51691F0B11017C0D9 -:10B52000C43883E0D8079CF4CC59DF4F10C0CE015B -:10B53000B7010F9433C58A3591054CF42A9607C09C -:10B54000CE01B6010F9433C5099709F021961092E8 -:10B55000A81A42E060E080E09AE10E945240C436BE -:10B56000D1057CF46AE578E080E09AE10F9457BA5F -:10B57000CA30D10534F46AE578E080E09AE10F94AE -:10B5800057BA4AE050E0BE0180E09AE10F94FEBA5B -:10B5900061ED77E080E09AE10F9457BA43E060E014 -:10B5A00080E09AE10E94524060ED77E080E09AE10D -:10B5B0000F9457BA43E06B2D80E09AE10E9452400D -:10B5C00062E877E080E09AE10F9457BA64E670E0B1 -:10B5D00080E090E00F94C7B70F94364B8823E1F0DA -:10B5E00068EC70E080E090E00F94C7B7B39443E05C -:10B5F000B41212C0D093801AC0937F1A6FE77AE119 -:10B6000081EC9FE00F94974884E190E04ADB0F942F -:10B61000B14201E010E002C000E010E00F94112AF6 -:10B62000012B09F442CFDF91CF911F910F91FF9031 -:10B63000EF90DF90CF90BF900895CF93DF931F924C -:10B640001F92CDB7DEB7FC01608171818281938149 -:10B650000F94DEC07A836983CE0101960F94C250A5 -:10B660000F900F90DF91CF910895FC01808191811F -:10B670008436910524F164E670E00F9433C5CB0164 -:10B680002AE030E0B9010F9433C5805D8093DA1968 -:10B6900080819181B9010F9433C5CB01B9010F9419 -:10B6A00033C5805D8093DB1980819181B9010F944E -:10B6B00033C5805D8093DC191092DD1923C08A3078 -:10B6C0009105BCF02AE030E0B9010F9433C5CB01FD -:10B6D000B9010F9433C5805D8093DA19808191811F -:10B6E000B9010F9433C5805D8093DB191092DC198A -:10B6F00009C06AE070E00F9433C5805D8093DA1969 -:10B700001092DB198AED99E10895FC018081918105 -:10B71000883E23E092075CF068EE73E00F9433C537 -:10B72000CB016AE070E00F9433C5805D01C080E218 -:10B730008093DA1980819181843691055CF064E60A -:10B7400070E00F9433C5CB016AE070E00F9433C50D -:10B75000805D01C080E28093DB19808191818A3015 -:10B7600091055CF02AE030E0B9010F9433C5CB01BC -:10B77000B9010F9433C5805D01C080E28093DC196C -:10B78000808191816AE070E00F9433C5805D809381 -:10B79000DD191092DE198AED99E10895CF92EF92AA -:10B7A0000F930F9498B76093791A70937A1A8093D5 -:10B7B0007B1A90937C1A0F9498B76093701A7093C9 -:10B7C000711A8093721A9093731A0F9498B76093BA -:10B7D0006C1A70936D1A80936E1A90936F1A97E497 -:10B7E000C92E25E5E22E06E42BE34DE362E580E079 -:10B7F0009AE10E943F410F91EF90CF900895CF932F -:10B80000DF93FC016491EC012196662331F080E026 -:10B810009AE10E941443CE01F4CFDF91CF910895B5 -:10B820000F931F93CF93DF938C01EB0141E061E015 -:10B8300080E09AE10E945240C801E1DF6AE380E0C3 -:10B840009AE10F9458BAFE0101900020E9F76C2F9D -:10B850006E1B6C5E41E080E09AE10E945240BE01A6 -:10B8600080E09AE1DF91CF911F910F910D9457BA2B -:10B870002F923F924F925F926F927F928F929F9200 -:10B88000AF92BF92CF92DF92EF92FF920F931F93EE -:10B89000CF93DF931C01EB017A0149018091F919E3 -:10B8A0009091FA19A091FB19B091FC19892B8A2B60 -:10B8B0008B2B09F4AFC00E94CD538091DE128F5FB5 -:10B8C000803109F480E09091DD12981709F4A2C04C -:10B8D0008E01000F111F000F111FC8018A50964FD3 -:10B8E0005C016091F9197091FA19882777FD8095AC -:10B8F000982F0F9411C12091E6193091E7194091CA -:10B90000E8195091E9190F9444C3F5012081318160 -:10B91000428153810F9496BF2B013C01B7018827C8 -:10B9200077FD8095982F0F9411C16B017C019B01CD -:10B93000AC01C301B2010F946FC0F50187FD05C0D2 -:10B94000408251826282738204C0C082D182E282CC -:10B95000F382B401882777FD8095982F0F9411C149 -:10B960004B015C01C8018A50964F7C01A5019401EE -:10B97000FC0160817181828193810F9472C21816DB -:10B980002CF4F70180829182A282B3821092F9197D -:10B990001092FA191092FB191092FC196AEF79E0D3 -:10B9A00086EF99E00E94C549F801E958F74F20E079 -:10B9B00030E040E752E460817181828193810F948D -:10B9C00076C04B015C01E090FE09F090FF09009108 -:10B9D000000A1091010A2091FA093091FB09409167 -:10B9E000FC095091FD096091F6097091F709809169 -:10B9F000F8099091F909E2EEF9E0FF93EF93E2E0A4 -:10BA0000CE2EEAE0DE2E0F941A0781E08093D40256 -:10BA10000F900F908091D402882361F0CE01880F9F -:10BA2000991F880F991F8A50964F0F94A14DBC0102 -:10BA3000C101F6DE8091FF1982FF09C001E021E01B -:10BA400040E050E0BA0182E891E00F947B3DDF9145 -:10BA5000CF911F910F91FF90EF90DF90CF90BF900B -:10BA6000AF909F908F907F906F905F904F903F909E -:10BA70002F90089522ED30E040E050E062E070E069 -:10BA800085E29DE5F5CE22ED30E04CEF5FEF61E021 -:10BA900070E083E29DE5ECCE2FEF30E040E050E037 -:10BAA00060E070E081E29DE5E3CE0F93CF93DF93FA -:10BAB0001F921F92CDB7DEB78091F9199091FA19B4 -:10BAC000A091FB19B091FC19B7FF08C01092F919A9 -:10BAD0001092FA191092FB191092FC198091971A82 -:10BAE0009091981AA091991AB0919A1A4091F919C7 -:10BAF0005091FA196091FB197091FC198417950700 -:10BB0000A607B70744F48093F9199093FA19A09304 -:10BB1000FB19B093FC198091D4028823B1F0809175 -:10BB2000931A9091941A2091F9193091FA19820F71 -:10BB3000931F9A838983CE0101960F94C250BC0152 -:10BB400080918F1A9091901A6BDE8091FF1982FF7D -:10BB50001EC0E091911AF091921A8091931A9091DF -:10BB6000941A2091F9193091FA19820F931F918339 -:10BB7000808340918D1A50918E1A60E070E000E051 -:10BB800021E080918B1A90918C1A0F947B3D0F903D -:10BB90000F90DF91CF910F9108950F931F93CF9343 -:10BBA000DF938C01EB0141E060E080E09AE10E94CC -:10BBB0005240C80124DE6AE380E09AE10F9458BA4B -:10BBC000FE0101900020E9F7BE016E1B7F0B6B5E4A -:10BBD0007F4F7695679543E080E09AE10E9452405E -:10BBE000BE0180E09AE10F9457BA64E877E080E004 -:10BBF0009AE1DF91CF911F910F910D9457BA0F9356 -:10BC00001F93CF93DF93E3E5F9E4C591D49180913D -:10BC10008B1A81117BC011E010938B1A0E941E6356 -:10BC20006CE87AE18CEF9FE00F94A8486EE87AE127 -:10BC30008AEF9FE00F94A84860E97AE188EF9FE0DF -:10BC40000F94A84860918C1A70918D1A882777FDFF -:10BC50008095982F0F9411C120916A1830916B181C -:10BC600040916C1850916D180F9476C06093921AA1 -:10BC70007093931A8093941A9093951A60918E1AE8 -:10BC800070918F1A882777FD8095982F0F9411C196 -:10BC900020916E1830916F18409170185091711862 -:10BCA0000F9476C06093961A7093971A8093981A9F -:10BCB0009093991A6091901A7091911A882777FD44 -:10BCC0008095982F0F9411C120917218309173189C -:10BCD00040917418509175180F9476C060939A1A19 -:10BCE00070939B1A80939C1A90939D1A1093D40280 -:10BCF0000F9498B76057704A8E4F9F4F6093E21928 -:10BD00007093E3198093E4199093E5194091F91920 -:10BD10005091FA196091FB197091FC19452B462B33 -:10BD2000472B09F46BC08091740A882341F010926C -:10BD3000F9191092FA191092FB191092FC198091BE -:10BD4000901A9091911A2091F9193091FA19820F55 -:10BD5000931F9093911A8093901A813620EF920747 -:10BD60003CF481E690EF9093911A8093901A19C059 -:10BD7000181619062CF41092911A1092901A11C0EC -:10BD80004FB7F8948091491990914A192091F91967 -:10BD90003091FA19820F931F90934A198093491991 -:10BDA0004FBF6091901A7091911A882777FD809506 -:10BDB000982F0F9411C120917218309173184091EF -:10BDC0007418509175180F9476C060939A1A7093F6 -:10BDD0009B1A80939C1A90939D1A62E370E080E016 -:10BDE00090E00F94C7B71092F9191092FA191092B7 -:10BDF000FB191092FC1981E08093D4028091D40247 -:10BE0000882339F08AE99AE10F947C4FBC01CE0176 -:10BE1000C4DE8091FF1982FD12C080916A1A8111DF -:10BE20000EC08091FF1982FF11C001E021E040E0C7 -:10BE300050E0BA0186EA91E00F947B3D07C060E9CB -:10BE40007AE188EF9FE00F949748EBCFDF91CF9195 -:10BE50001F910F910895CF93DF9300D000D0CDB7FD -:10BE6000DEB70F9420012091220A3091230A4CE37F -:10BE7000429FC001439F900D11249A838983209192 -:10BE8000240A3091250A429FC001439F900D11243E -:10BE90009C838B8340E060E080E09AE10E94524006 -:10BEA000E091460AF0E0EE0FFF1FE75FF74B859148 -:10BEB0009491A5DC40E06BE080E09AE10E94524062 -:10BEC0006AEC77E080E09AE10F9457BA40E06CE0CA -:10BED00080E09AE10E945240CE01019616DCBC013E -:10BEE00080E09AE10F9457BA64E474E080E09AE14C -:10BEF0000F9457BA41E060E080E09AE10E9452401E -:10BF0000E091460AF0E0EE0FFF1FEB5FF74B8591E3 -:10BF1000949175DC41E06BE080E09AE10E94524030 -:10BF20006AEC77E080E09AE10F9457BA41E06CE068 -:10BF300080E09AE10E945240CE010396E6DBBC010C -:10BF400080E09AE10F9457BA64E474E080E09AE1EB -:10BF50000F9457BA42E060E080E09AE10E945240BC -:10BF600068E877E080E09AE10F9457BA82ED92E1B9 -:10BF70000F94C250BC0180E09AE10F9457BA60ED73 -:10BF800077E080E09AE10F9457BA42E06CE080E0FD -:10BF90009AE10E94524061E977E080E09AE10F94D3 -:10BFA00057BA80ED92E10F94C250BC0180E09AE153 -:10BFB0000F9457BA43E060E080E09AE10E9452405B -:10BFC00065E977E080E09AE10F9457BA43E065E0D5 -:10BFD00080E09AE10E9452408091CF1290E09E83CF -:10BFE0008D83CE0105960F94C250BC0180E09AE18A -:10BFF0000F9457BA43E06AE080E09AE10E94524011 -:10C0000067EA77E080E09AE10F9457BA43E06FE087 -:10C0100080E09AE10E9452408091CE1290E09E838F -:10C020008D83CE0105960F94C250BC0180E09AE149 -:10C030000F9457BA0F94364B882321F00F946C3D20 -:10C040000F94B14226960FB6F894DEBF0FBECDBF57 -:10C05000DF91CF91089540E060E080E09AE10E9496 -:10C0600052408CED9DE5CBDB41E060E080E09AE161 -:10C070000E9452401E9B03C089ED9DE502C086EDE3 -:10C080009DE5BDDB42E060E080E09AE10E94524025 -:10C090001D9B03C083ED9DE502C080ED9DE5AFDBF8 -:10C0A00043E060E080E09AE10E9452401C9B03C0A4 -:10C0B0008DEC9DE502C08AEC9DE5A1CB0F93CBDF13 -:10C0C0008091FF1982FF09C001E021E040E050E0CB -:10C0D000BA018CE591E00F947B3D0F9108950F9488 -:10C0E00059480F94112A81E00E94CF60B4DF0F9469 -:10C0F000364B8823B1F30F94364B8111FCCF6AE0A5 -:10C1000070E080E090E00F94C7B70F94364B811138 -:10C11000FCCF0F9459480D94B142EF92FF920F93C8 -:10C120001F93CF93DF937C01EB018A010F94493D6C -:10C1300010927C1910927B1910927A191092791929 -:10C140000F94112A80E00E94CF600F94594840E07C -:10C1500060E080E09AE10E945240E7EAF6E48591CF -:10C1600094914DDB41E060E080E09AE10E94524012 -:10C170002091460A30E0220F331F2F57394BF90127 -:10C18000859194913CDBF7013197EB30F10508F094 -:10C19000FDC0E658FF4F42E060E080E09AE10D9478 -:10C1A00084C50E945240EDE8F6E48591949127DB26 -:10C1B00043E060E080E09AE10E945240E091460A4C -:10C1C000F0E0EE0FFF1FE957F94BDDC00E9452402F -:10C1D000E3EDF6E4C8C00E945240EBEAF6E4859134 -:10C1E00094910DDB43E060E080E09AE10E945240D0 -:10C1F000E091460AF0E0EE0FFF1FED58F94B8591F4 -:10C200009491FDDA43E061E19BC00E945240EBE86B -:10C21000F6E485919491F3DA42E062E180E09AE1FC -:10C220000E945240BE0180E09AE10F9457BA43E069 -:10C2300060E080E09AE10E945240EDEAF6E48591E8 -:10C240009491DDDA43E062E180E09AE10E9452409D -:10C25000B8017BC00E945240E9EAF6E42DC00E947A -:10C260005240E091460AF0E0EE0FFF1FE155F94B16 -:10C2700009C00E945240E091460AF0E0EE0FFF1F15 -:10C28000ED55F94B85919491BADA43E060E080E096 -:10C290009AE10E945240E091460AF0E0EE0FFF1F43 -:10C2A000ED58F94B48C00E945240E091460AF0E038 -:10C2B000EE0FFF1FEF51F84B85919491A0DA43E008 -:10C2C00060E080E09AE10E945240EBE8F6E433C07F -:10C2D0000E945240E091460AF0E0EE0FFF1FEB5241 -:10C2E000F94B859194918BDA43E060E080E09AE12C -:10C2F0000E945240E091460AF0E0EE0FFF1FE75225 -:10C30000F94B19C00E945240E091460AF0E0EE0F4E -:10C31000FF1FED56F94B8591949171DA43E060E08F -:10C3200080E09AE10E945240E091460AF0E0EE0F70 -:10C33000FF1FE958F94B8591949161DA43E062E17E -:10C3400080E09AE10E945240BE0180E09AE10F94A1 -:10C3500057BA1CC00E945240E091460AF0E0EE0F2E -:10C36000FF1FE359F74B8591949149DA43E060E070 -:10C3700080E09AE10E945240E091460AF0E0EE0F20 -:10C38000FF1FED58F94B8591949139DA68EE73E00F -:10C3900080E090E00F94C7B70F94493D64E670E0E9 -:10C3A00080E090E00F94C7B70F94112A80E00E94BC -:10C3B000CF600F94364B882389F3E091460AF0E072 -:10C3C000EE0FFF1FE556F94B859194910F94DC49D0 -:10C3D000DF91CF911F910F91FF90EF900D94B1429B -:10C3E0003F924F925F926F927F928F929F92AF9205 -:10C3F000BF92CF92DF92EF92FF920F931F93CF9352 -:10C40000DF93CDB7DEB76C970FB6F894DEBF0FBEE3 -:10C41000CDBF382E882341F081E0381651F080E0FE -:10C4200090E0A2E5B3E409C080E090E0AFE7B3E4B8 -:10C4300004C080E090E0AAE5B3E48B879C87AD87D9 -:10C44000BE871092B1020F948E3781E00F94AB1526 -:10C45000311041C020E030E048E851E46091FE092D -:10C460007091FF098091000A9091010A0F9496BF84 -:10C470007B018C016093FE097093FF098093000A91 -:10C480009093010A2091FA093091FB094091FC092F -:10C490005091FD096091F6097091F7098091F809B2 -:10C4A0009091F909E2EEF9E0FF93EF93812C912C42 -:10C4B000A4E3AA2EA2E4BA2EB2E0CB2EBAE0DB2E81 -:10C4C0000F941A0784E00F942F370F94901D0F9448 -:10C4D0008E370F900F90A1E0B0E0032C02C0AA0F9E -:10C4E000BB1F0A94E2F7B88BAF878F850F942F3765 -:10C4F00020E030E040E752E46B857C858D859E85A9 -:10C500000F9496BF6F8B788F898F9A8FE32DFF27BB -:10C51000E7FDF095FA87E987EE0FFF1FEE0FFF1F8B -:10C52000FA8BE98BEA50F64F3F019B01AC01608129 -:10C530007181828193810F9495BFD3016D937D9317 -:10C540008D939C931397E090FE09F090FF09009162 -:10C55000000A1091010A2091FA093091FB094091DB -:10C56000FC095091FD096091F6097091F7098091DD -:10C57000F8099091F909B2EE4B2EB9E05B2E5F926B -:10C580004F92812C912CE4E3AE2EE2E4BE2EF2E039 -:10C59000CF2EFAE0DF2E0F941A070F94901D0F9400 -:10C5A0008E37832D0F942635832D0F94FF1D6B8BB3 -:10C5B0007C8B8D8B9E8B20E030E040EF52E4F301CA -:10C5C00060817181828193810F9496BFD3016D93B5 -:10C5D0007D938D939C931397E090FE09F090FF0953 -:10C5E0000091000A1091010A2091FA093091FB098B -:10C5F0004091FC095091FD096091F6097091F7098D -:10C600008091F8099091F9095F924F920F941A075F -:10C610000F94901D2B853C854D855E85F3016081CF -:10C620007181828193810F9496BFD3016D937D9325 -:10C630008D939C931397E090FE09F090FF09009171 -:10C64000000A1091010A2091FA093091FB094091EA -:10C65000FC095091FD096091F6097091F7098091EC -:10C66000F8099091F9095F924F920F941A078F85FC -:10C670000F942F370F94901D0F948E370F943535EC -:10C68000BC017F938F9329853A85285A3F4F3F936A -:10C690002F9327E93DE53F932F938B8F7C8F0F944A -:10C6A00014CA0FB6F894DEBF0FBECDBF6B8D7C8D64 -:10C6B000311003C08DE59FE002C08BE59FE00F9431 -:10C6C0002BCD832D0F94FF1D2B013C012B893C8921 -:10C6D0004D895E890F9495BF6B017C0120E030E0AD -:10C6E000A9010F9472C2181644F0D701C601B058C0 -:10C6F0008B8B9C8BAD8BBE8B04C0CB8ADC8AED8A86 -:10C70000FE8A8B899C89AD89BE8989839A83AB8394 -:10C71000BC83A989BA89AA50B64FBA87A98720E0F5 -:10C7200030E040E752E46D917D918D919C910F94A2 -:10C7300095BFE985FA856083718382839383E09056 -:10C74000FE09F090FF090091000A1091010A209162 -:10C75000FA093091FB094091FC095091FD09609163 -:10C76000F6097091F7098091F8099091F909A2EE04 -:10C77000B9E0BF93AF93812C912CE4E3AE2EE2E4B9 -:10C78000BE2EF2E0CF2EFAE0DF2E0F941A070F94A0 -:10C79000901D8F850F942F372F89388D498D5A8D95 -:10C7A000A985BA856D917D918D919C910F9495BFCE -:10C7B000E985FA856083718382839383E090FE0923 -:10C7C000F090FF090091000A1091010A2091FA09E6 -:10C7D0003091FB094091FC095091FD096091F609E7 -:10C7E0007091F7098091F8099091F909A2EEB9E0EA -:10C7F000BF93AF930F941A070F94901D0F948E3729 -:10C80000832D0F94FF1D9B01AC01C301B2010F9456 -:10C8100095BF2B013C010F900F900F900F9020E0DF -:10C8200030E0A9010F9472C2181624F077FA7094C0 -:10C8300077F870944D825E826F8278868E010F5FEA -:10C840001F4F5E01F9E0AF0EB11CB1E88B2EBDE5C4 -:10C850009B2EF4018491A1E8EA2EADE5FA2E8823FF -:10C8600041F00F94AD43FFEFEF1AFF0AF7018491F7 -:10C87000F6CFD801CD90DD90ED90FD908D0122E0B6 -:10C8800030E0B701A60184E998E00E94FA452B85C3 -:10C890003C854D855E85C701B6010F9495BF6B0140 -:10C8A0007C0120E030E0A9010F9472C2181624F038 -:10C8B000C701B601905802C0C701B60120E030E0C0 -:10C8C00040EA50E40F9472C21816B4F480E00F945A -:10C8D000AB15B1E03B1631F0E2E03E1631F06BE310 -:10C8E00078E005C066E178E002C068E278E040E008 -:10C8F00050E089E090E05BC00A151B0509F0A9CF64 -:10C90000E9E6FDE584918F01882339F00F94AD436A -:10C910000F5F1F4FF8018491F7CFA30192016B893C -:10C920007C898D899E890F9495BF6B017C0120E0E5 -:10C9300030E0A9010F9472C2B701A60118160CF0DD -:10C94000705822E030E084E998E00E94FA4520E047 -:10C9500030E0A901C701B6010F9472C218165CF449 -:10C9600020E030E040E85FE3C701B6010F9472C2F7 -:10C9700018165CF048C020E030E040E85FEBC701EB -:10C98000B6010F946FC087FF3EC0F1E03F1631F053 -:10C9900082E0381631F06BE378E005C066E178E0BC -:10C9A00002C068E278E040E050E088E090E0B5DB6B -:10C9B000E989FA89EA50F64F1082118212821382B5 -:10C9C000E090FE09F090FF090091000A1091010A21 -:10C9D0002091FA093091FB094091FC095091FD0921 -:10C9E0006091F6097091F7098091F8099091F90921 -:10C9F000F2E0CF2EFAE0DF2E0F945B12832D0F941E -:10CA0000E73C80E02AC0E989FA89EA50F64F1082B3 -:10CA1000118212821382E090FE09F090FF090091CA -:10CA2000000A1091010A2091FA093091FB09409106 -:10CA3000FC095091FD096091F6097091F709809108 -:10CA4000F8099091F909E2E0CE2EEAE0DE2E0F948B -:10CA50005B12832D0F94E73C81E06C960FB6F8943F -:10CA6000DEBF0FBECDBFDF91CF911F910F91FF9021 -:10CA7000EF90DF90CF90BF90AF909F908F907F907E -:10CA80006F905F904F903F9008958F929F92AF92DA -:10CA9000BF92CF92DF92EF92FF920F931F9320E00D -:10CAA00030E04EE353E460917319709174198091F2 -:10CAB0007519909176190F9472C218160CF093C0E4 -:10CAC0008091F9199091FA19A091FB19B091FC1974 -:10CAD000892B8A2B8B2B09F46BC00E94CD5380913C -:10CAE000DE128F5F803109F480E09091DD1298179B -:10CAF00009F45EC06091F9197091FA19882777FDE1 -:10CB00008095982F0F9411C12091E6193091E71963 -:10CB10004091E8195091E9190F9444C39B01AC016D -:10CB20006091020A7091030A8091040A9091050AAB -:10CB30000F9496BF6093020A7093030A8093040ACD -:10CB40009093050A1092F9191092FA191092FB1994 -:10CB50001092FC19E090FE09F090FF090091000A84 -:10CB60001091010A2091FA093091FB094091FC09CA -:10CB70005091FD096091F6097091F7098091F809CB -:10CB80009091F909E2EEF9E0FF93EF93E5E58E2E3F -:10CB9000982CE5EDAE2EEFE3BE2EF2E0CF2EFAE0BC -:10CBA000DF2E0F941A0781E08093D4020F900F902C -:10CBB0008091D402882349F082E09AE00F94A14D3D -:10CBC000BC0187E29DE50F94105C8091FF1982FF04 -:10CBD00040C001E021E040E050E0BA0182E891E08D -:10CBE0000F947B3D36C00F94594840E060E080E0F0 -:10CBF0009AE10E945240E091460AF0E0EE0FFF1FDA -:10CC0000E556F74B859194910F94FF5B42E060E00D -:10CC100080E09AE10E945240E091460AF0E0EE0F77 -:10CC2000FF1FED5BF84B859194910F94FF5B60EDD6 -:10CC300077E080E090E00F94C7B71F910F91FF90CD -:10CC4000EF90DF90CF90BF90AF909F908F900D941A -:10CC5000B1421F910F91FF90EF90DF90CF90BF9066 -:10CC6000AF909F908F90089520E030E04EE353E422 -:10CC7000609173197091741980917519909176195A -:10CC80000F9472C2181634F461E085E099E50E94B1 -:10CC9000BCC52CC00F94594840E060E080E09AE1A8 -:10CCA0000E945240E091460AF0E0EE0FFF1FE55669 -:10CCB000F74B859194910F94FF5B42E060E080E038 -:10CCC0009AE10E945240E091460AF0E0EE0FFF1F09 -:10CCD000ED5BF84B859194910F94FF5B60ED77E0ED -:10CCE00080E090E00F94C7B70F9459480D94B1427B -:10CCF0000F94594841E060E080E09AE10E94524080 -:10CD0000E091460AF0E0EE0FFF1FEF5FF74B8591D1 -:10CD100094910F94FF5B42E060E080E09AE10E9412 -:10CD20005240E091460AF0E0EE0FFF1FE15CF84B45 -:10CD3000859194910D94FF5B0F94594842E060E017 -:10CD400080E09AE10E945240E091460AF0E0EE0F46 -:10CD5000FF1FE552F74B859194910D94FF5B1F9354 -:10CD6000CF93DF930F94594840E060E080E09AE170 -:10CD70000E945240E091460AF0E0EE0FFF1FE3519F -:10CD8000F84B859194910F94FF5B42E060E080E066 -:10CD90009AE10E945240E091460AF0E0EE0FFF1F38 -:10CDA000E35BF84B859194910F94FF5B10E043E0B7 -:10CDB000612F80E09AE10E9452406BE975E080E0CB -:10CDC0009AE10F9457BACAE0D0E00F94112A81E09B -:10CDD0000E94CF6065E570E080E090E00F94C7B7F7 -:10CDE000219799F71F5F143111F7DF91CF911F91B0 -:10CDF00008951F93CF93DF930F94594840E060E06C -:10CE000080E09AE10E945240E091460AF0E0EE0F85 -:10CE1000FF1FE751F84B859194910F94FF5B42E01F -:10CE200060E080E09AE10E945240E091460AF0E022 -:10CE3000EE0FFF1FE35BF84B859194910F94FF5B1E -:10CE400010E043E0612F80E09AE10E9452406BE9DC -:10CE500075E080E09AE10F9457BACAE0D0E00F94F1 -:10CE6000112A81E00E94CF6069E870E080E090E0E4 -:10CE70000F94C7B7219799F71F5F143111F7DF910E -:10CE8000CF911F9108950F931F93CF93DF930F942A -:10CE9000594840E060E080E09AE10E945240E09111 -:10CEA000460AF0E0EE0FFF1FE753F74B8591949190 -:10CEB0000F94FF5B41E061E080E09AE10E94524004 -:10CEC000E091460AF0E0EE0FFF1FEB57FA4B859119 -:10CED00094910F94FF5B42E061E080E09AE10E9450 -:10CEE0005240E091460AF0E0EE0FFF1FEB57F84B7F -:10CEF000859194910F94FF5B43E061E080E09AE1BB -:10CF00000E945240E091460AF0E0EE0FFF1FE75703 -:10CF1000F84B859194910F94FF5B41E060E080E0D5 -:10CF20009AE10E94524062E676E080E09AE10F9436 -:10CF300057BA0091A81A112707FD1095C1E0D0E05B -:10CF400080916B0A90916C0A892B09F072C00F9442 -:10CF5000112A81E00E94CF602091A81A332727FD73 -:10CF60003095C801821B930B97FF03C09195819563 -:10CF7000910905970CF44DC0201731070CF4219747 -:10CF8000021713070CF42196C430D1052CF4209716 -:10CF900029F4C1E0D0E002C0C3E0D0E041E060E0AD -:10CFA00080E09AE10E94524062ED77E080E09AE1F1 -:10CFB0000F9457BA42E060E080E09AE10E9452404C -:10CFC00062ED77E080E09AE10F9457BA43E060E0C9 -:10CFD00080E09AE10E94524062ED77E080E09AE1C1 -:10CFE0000F9457BA4C2F60E080E09AE10E945240C3 -:10CFF00062E676E080E09AE10F9457BA0091A81AB1 -:10D00000112707FD109564E670E080E090E00F9432 -:10D01000C7B70F94364B882309F492CFD0936C0A8C -:10D02000C0936B0A64EF71E080E090E00F94C7B7A3 -:10D0300087CF0F945948DF91CF911F910F910D9495 -:10D04000B1424F925F926F927F928F929F92AF9276 -:10D05000BF92CF92DF92EF92FF920F931F93CF93E5 -:10D06000DF93CDB7DEB72C970FB6F894DEBF0FBEB7 -:10D07000CDBF8091820A882309F4ECC0C0903F0A9A -:10D08000D090400AE090410AF090420AC701B601F0 -:10D0900020EA36E841E050E00F9446C529873A87F8 -:10D0A0004B875C873E832D830F9498B70091A0092E -:10D0B0001091A1092091A2093091A309601B710B65 -:10D0C000820B930B28EE33E040E050E00F9446C50E -:10D0D00029013A01C90160E17EE00F9433C54B019B -:10D0E00080EF91EF689F9001699F300D789F300D20 -:10D0F0001124C901840D951D6CE370E00F9433C5B4 -:10D100008B0144EC46035001479FB00C1124A20E42 -:10D11000B31EA40CB51C40E060E080E09AE10E94E0 -:10D120005240E091460AF0E0EE0FFF1FEB5CF94B36 -:10D13000859194910F94FF5B41E066E080E09AE175 -:10D140000E945240CE0105960F94C250BC0180E06F -:10D150009AE10F9457BA61EB77E080E09AE10F947F -:10D1600057BAA985BA8520E639E74EEF5FEF0F94ED -:10D17000A9C56C0D7D1D8E1D9F1D2AE030E040E08D -:10D1800050E00F9446C5B901882777FD8095982F08 -:10D190000F9411C169837A838B839C83CE0101969E -:10D1A0000F94714EBC0180E09AE10F9457BA64EB82 -:10D1B00077E080E09AE10F9457BA42E060E080E0C7 -:10D1C0009AE10E945240E091460AF0E0EE0FFF1F04 -:10D1D000EF5CF94B859194910F94FF5B43E068E01D -:10D1E00080E09AE10E9452408982CE0101960F941C -:10D1F000894DBC0180E09AE10F9457BA67EB77E064 -:10D2000080E09AE10F9457BA0983CE0101960F94FA -:10D21000894DBC0180E09AE10F9457BA61EB77E049 -:10D2200080E09AE10F9457BAA982CE0101960F943B -:10D23000894DBC0180E09AE10F9457BA66E776E029 -:10D2400080E09AE10F9457BA0F94364B882309F483 -:10D2500074C16FC181EF9FE00F94F5CC6B017C012D -:10D260008DEE9FE00F94F5CC4B015C01C701B60138 -:10D270000F940FC169837A838B839C8320EAC21643 -:10D2800026E8D20621E0E206F10450F0C701B6011B -:10D2900020EA36E841E050E00F9446C5D90102C0CB -:10D2A000A0E0B0E0B887AF831A161B0684F420E62E -:10D2B00039E74EEF5FEF0F94A9C56C0D7D1D8E1DF4 -:10D2C0009F1D0F940FC169837A838B839C83C50153 -:10D2D000B40120EA35E040E050E00F9446C5122F3B -:10D2E000032FA0EAB5E00F949FC5A5019401261B6A -:10D2F000370B480B590BCA01B9012CE330E040E071 -:10D3000050E00F9446C5F22E30E6139F800C112496 -:10D310004CE3F49E801811240F94594840E060E0DB -:10D3200080E09AE10E945240E091460AF0E0EE0F60 -:10D33000FF1FE35DF94B859194910F94FF5BCE0144 -:10D3400001960F94714EFC0101900020E9F7682FBF -:10D350006E1B6E5E41E080E09AE10E945240CE0179 -:10D3600001960F94714EBC0180E09AE10F9457BA78 -:10D370008F819885181619067CF5CE0101960F94B9 -:10D38000714EFC0101900020E9F7682F6E1B615F70 -:10D3900041E080E09AE10E9452406AEB77E080E051 -:10D3A0009AE10F9457BACE0101960F94714EFC0189 -:10D3B00001900020E9F7682F6E1B665F41E080E076 -:10D3C0009AE10E945240CE0107960F94855BBC0102 -:10D3D00080E09AE10F9457BA41E062E180E09AE17F -:10D3E0000E94524065EB77E080E09AE10F9457BAD3 -:10D3F00042E060E080E09AE10E945240E091460AFB -:10D40000F0E0EE0FFF1FE75DF94B859194910F94CB -:10D41000FF5B43E062E180E09AE10E94524065EBED -:10D4200077E080E09AE10F9457BA43E06EE080E045 -:10D430009AE10E945240912C9E828D82CE010596E7 -:10D440000F94C250BC0180E09AE10F9457BA43E0B8 -:10D450006EE080E09AE10E94524062E474E080E075 -:10D460009AE10F9457BA43E06CE080E09AE10E94A1 -:10D4700052406DEB77E080E09AE10F9457BA43E0B9 -:10D4800069E080E09AE10E9452408F2D90E09E83F7 -:10D490008D83CE0105960F94C250BC0180E09AE1C5 -:10D4A0000F9457BA43E069E080E09AE10E9452404D -:10D4B00062E474E080E09AE10F9457BA43E067E0D9 -:10D4C00080E09AE10E94524065E973E080E09AE1D1 -:10D4D0000F9457BA43E064E080E09AE10E94524022 -:10D4E000812F902F9E838D83CE0105960F94C2507D -:10D4F000BC0180E09AE10F9457BA84E090E09093E9 -:10D500001802809317020F94364B81110CC00F94B0 -:10D51000112A81E00E94CF6064E670E080E090E034 -:10D520000F94C7B7F0CF81E090E0909318028093FA -:10D5300017020F946C3D0F94B1422C960FB6F894DD -:10D54000DEBF0FBECDBFDF91CF911F910F91FF9036 -:10D55000EF90DF90CF90BF90AF909F908F907F9093 -:10D560006F905F904F9008950F931F93CF93DF9329 -:10D57000EC018430910524F08C010350110902C0A4 -:10D5800000E010E040E060E080E09AE10E9452405C -:10D590006FEB77E080E09AE10F9457BA40E061E0EA -:10D5A00080E09AE10E945240000F111FF801E750FD -:10D5B000F84B859194910F94FF5B41E060E080E02F -:10D5C0009AE10E9452406FEB77E080E09AE10F947D -:10D5D00057BA41E061E080E09AE10E945240F801D0 -:10D5E000E550F84B859194910F94FF5B42E060E029 -:10D5F00080E09AE10E9452406FEB77E080E09AE190 -:10D600000F9457BA43E060E080E09AE10E945240F4 -:10D610006FEB77E080E09AE10F9457BAC130D10503 -:10D6200011F440E008C0C230D10511F441E003C05C -:10D63000239734F042E060E080E09AE10E9452409B -:10D6400062E676E080E09AE1DF91CF911F910F9141 -:10D650000D9457BA0F931F93CF93DF938FEF80935F -:10D66000460A0F94AD470F94594881E090E07CDF63 -:10D670000091A81A112707FD1095C1E0D0E0809114 -:10D68000460A8F3F09F048C00F94112A81E00E949A -:10D69000CF602091A81A332727FD3095C801821B3F -:10D6A000930B97FF03C09195819591090597F4F02D -:10D6B000201731070CF42197021713070CF4219659 -:10D6C000C330D1052CF4209729F4C1E0D0E002C08A -:10D6D000C2E0D0E0CE0148DF0091A81A112707FD73 -:10D6E000109564E670E080E090E004C064E170E0D2 -:10D6F00080E090E00F94C7B70F94364B882309F46D -:10D70000BECF8C2F81500F94CB3C64EF71E080E052 -:10D7100090E00F94C7B7B3CF809115099091160987 -:10D720002091170930911809821B930B8F77992745 -:10D73000029724F01092460A1092D7020F943548AF -:10D740000F945948DF91CF911F910F910D94B142E1 -:10D75000EF92FF920F931F93CF93DF930F9459484B -:10D7600040E060E080E09AE10E94524064ED77E0A2 -:10D7700080E09AE10F9457BA00E010E0C1E0D0E0F9 -:10D780002091A81A422F552741950CF45095CA01B3 -:10D7900057FF03C0919581959109039784F027FF66 -:10D7A00002C0219702C021112196C330D1052CF46B -:10D7B000209729F4C1E0D0E002C0C2E0D0E042E00E -:10D7C00060E080E09AE10E94524069EC77E080E0FE -:10D7D0009AE10F9457BA43E060E080E09AE10E943A -:10D7E000524069EC77E080E09AE10F9457BA42E04A -:10D7F00062E080E09AE10E945240E091460AF0E047 -:10D80000EE0FFF1FEB57FA4B859194910F94FF5B3E -:10D8100043E062E080E09AE10E945240E091460AD3 -:10D82000F0E0EE0FFF1FE357F84B859194910F94B2 -:10D83000FF5B4C2F4F5F60E080E09AE10E94524016 -:10D8400062E676E080E09AE10F9457BA64E670E011 -:10D8500080E090E00F94C7B70F5F1F4F05361105AA -:10D8600034F083E690E00F94515600E010E00F94FE -:10D87000364B882379F084E190E0C130D105D9F4AA -:10D880000F94515684E090E00F945156EE24E394A7 -:10D89000F12C02C0E12CF12C0F94112A80E00E949F -:10D8A000CF60EF2809F46CCFDF91CF911F910F91DA -:10D8B000FF90EF9008950F94515685E090E00F94FB -:10D8C0005156E2E0EE2EF12CE7CF0F931F93CF934A -:10D8D000DF931F92CDB7DEB7142F462F682F80E05D -:10D8E0009AE159830E945240E12F5981F52F6491AA -:10D8F0008F010F5F1F4F662331F080E09AE10E9495 -:10D900001443F801F4CF0F90DF91CF911F910F9145 -:10D9100008956F927F928F929F92AF92BF92CF9213 -:10D92000DF92EF92FF920F931F93CF93DF931F929B -:10D93000CDB7DEB73C016B017A01580129830F9402 -:10D9400098B7605C7D4B8F4F9F4F6093EE1970933B -:10D95000EF198093F0199093F1192981EC14FD04CB -:10D960002CF444EF842E47E0942E04C03FED832E28 -:10D9700037E0932E21110F94594840E060E080E099 -:10D980009AE10E9452408FEF6816780619F06114F0 -:10D99000710461F4E091460AF0E0EE0FFF1FE956D2 -:10D9A000F94B859194910F94FF5B30C0E1E06E16C6 -:10D9B000710461F4E091460AF0E0EE0FFF1FE956B2 -:10D9C000F94B859194910F94FF5B30C0F2E06F1694 -:10D9D000710461F4E091460AF0E0EE0FFF1FE95395 -:10D9E000F94B859194910F94FF5B40C083E06816DA -:10D9F000710461F4E091460AF0E0EE0FFF1FE1547C -:10DA0000F94B859194910F94FF5B40C0E4E06E1652 -:10DA1000710461F4E091460AF0E0EE0FFF1FE55457 -:10DA2000F94B859194910F94FF5B3CC0F5E06F1624 -:10DA3000710461F4E091460AF0E0EE0FFF1FE95433 -:10DA4000F94B859194910F94FF5B30C086E0681686 -:10DA5000710461F4E091460AF0E0EE0FFF1FED540F -:10DA6000F94B859194910F94FF5B2CC0E7E06E1603 -:10DA7000710461F4E091460AF0E0EE0FFF1FE553F8 -:10DA8000F94B859194910F94FF5B28C0F8E06F16D5 -:10DA9000710441F4E091460AF0E0EE0FFF1FE553F8 -:10DAA000F94B27C089E06816710421F0EAE06E1690 -:10DAB000710441F4E091460AF0E0EE0FFF1FED53D0 -:10DAC000F94B17C0FBE06F16710441F4E091460A70 -:10DAD000F0E0EE0FFF1FE153F94B0BC08CE068162E -:10DAE000710459F4E091460AF0E0EE0FFF1FE5568D -:10DAF000F94B859194910F94FF5B41E060E080E0E9 -:10DB00009AE10E94524061EE77E080E09AE10F9442 -:10DB100057BAC30101960397A0F5E091460AF0E0D9 -:10DB2000EE0FFF1FE156F94B4591549162E080E002 -:10DB3000CCDE42E062E180E09AE10E945240EFEFE9 -:10DB40006E167E0611F4B40102C06EE376E080E04A -:10DB50009AE10F9457BAE091460AF0E0EE0FFF1FEA -:10DB6000E358F94B4591549163E080E0AEDE43E029 -:10DB700062E180E09AE10E9452406A946728D9F0FD -:10DB800021C0C30109970297F8F4E091460AF0E03A -:10DB9000EE0FFF1FE157F94B4591549162E080E091 -:10DBA00094DE42E062E180E09AE10E94524089E026 -:10DBB0006816710439F06EE376E080E09AE10F9424 -:10DBC00057BA84C0B401F9CFE9E06E1671040CF0C5 -:10DBD0007DC0F3E06F16710439F083E068167104BC -:10DBE00034F440E050E005C041E050E002C042E0C3 -:10DBF00050E0840126EF37E069E070E083E090E0D8 -:10DC00000F94553CE4E06E16710439F0F4E06F16A1 -:10DC1000710434F440E050E005C041E050E002C03F -:10DC200042E050E084012BE338E062E070E082E003 -:10DC300090E00F94553C85E06816710439F0E5E0FA -:10DC40006E16710434F440E050E005C041E050E04D -:10DC500002C042E050E0840126E138E068E070E074 -:10DC600082E090E00F94553CF6E06F16710439F0B5 -:10DC700086E06816710434F440E050E005C041E0ED -:10DC800050E002C042E050E0840128E238E06EE05B -:10DC900070E082E090E00F94553CE7E06E1671046E -:10DCA00039F0F7E06F16710434F440E050E005C03D -:10DCB00041E050E002C042E050E084012DEF37E047 -:10DCC00060E070E083E090E00F94553C1A141B0470 -:10DCD0001CF4C5010E94AD608FEFC81AD80AEE0C83 -:10DCE000FF1CEC14FD041CF480E090E001C0C601B0 -:10DCF0000F90DF91CF911F910F91FF90EF90DF90E8 -:10DD0000CF90BF90AF909F908F907F906F9008952D -:10DD10005F926F927F928F929F92AF92BF92CF92BB -:10DD2000DF92EF92FF920F931F93CF93DF93582EC2 -:10DD30008823E1F060915D1970915E1980915F19FF -:10DD4000909160190F94DEC06B016091731970910E -:10DD5000741980917519909176190F94DEC05B014A -:10DD600074EB872E912C80E090E01BC060917319BA -:10DD70007091741980917519909176190F94DEC085 -:10DD80006B0160915D1970915E1980915F1990919E -:10DD900060190F94DEC05B016CE3862E912C88EC39 -:10DDA00090E090937C1980937B19552019F084E6BC -:10DDB00090E002C080E090E090937A198093791906 -:10DDC0000F94112A81E00E94CF6081E090E090934F -:10DDD000180280931702E12CF12CC0E0D0E055E04E -:10DDE000652E712C21960F94112A81E00E94CF603C -:10DDF00000E911E020E042E050E0B701552019F0C1 -:10DE000087E090E002C083E090E083DD7C01CE01FA -:10DE1000B3010F9433C5892B11F40E94D668C8153D -:10DE2000D90504F310927C1910927B1910927A197B -:10DE3000109279190F94112AB501882777FD8095E2 -:10DE4000982F552071F180905D1990905E19A090E7 -:10DE50005F19B09060190F9411C19B01AC016091E2 -:10DE600073197091741980917519909176190F94A6 -:10DE700095BF0F94DEC06A3071050CF047C0B60143 -:10DE8000882777FD8095982F0F9411C19B01AC01D5 -:10DE9000C501B4010F9495BF0F94DEC083E090E0FC -:10DEA0002CC08090731990907419A0907519B0903F -:10DEB00076190F9411C19B01AC0160915D197091AD -:10DEC0005E1980915F19909160190F9495BF0F941E -:10DED000DEC063307105D4F4B601882777FD8095E4 -:10DEE000982F0F9411C19B01AC01C501B4010F948F -:10DEF00095BF0F94DEC08AE090E0681779077CF444 -:10DF000043EB55E0BA0181E090E005C043EB55E0FA -:10DF1000BA0182E090E00F948D60C0E001C0C1E0E2 -:10DF20000F94112A81E00E94CF6022E030E030930C -:10DF30001802209317028C2FDF91CF911F910F9120 -:10DF4000FF90EF90DF90CF90BF90AF909F908F9019 -:10DF50007F906F905F9008952F923F924F925F92C3 -:10DF60006F927F928F929F92AF92BF92CF92DF92E9 -:10DF7000EF92FF920F931F93CF93DF9300D01F92E6 -:10DF8000CDB7DEB78C01212C312C68EC462E62E433 -:10DF9000562E7CE3672E712C0C301105E8F7F80142 -:10DFA000EB57FF4F0D9484C5E091460AF0E0EE0F69 -:10DFB000FF1FE356FA4B8591949141E060E00F9486 -:10DFC0000188882309F4D6C161E08FE59FE00F94B2 -:10DFD0001DCD01E010E0E0CF87EF9FE00F94EDCC86 -:10DFE000863E09F437C020F4813009F4C3C105C06E -:10DFF000803F31F08A3F09F4C3C102E010E0CCCF8A -:10E0000004E010E0C9CFE091460AF0E0EE0FFF1FF8 -:10E01000E755FA4B859194910F94EC930F949B8A5A -:10E02000882309F4B3C16AEF87EF9FE00F94FFCC18 -:10E03000A7C1E091460AF0E0EE0FFF1FEB56FA4B46 -:10E04000859194910F94EC9380E00E94A0548823D2 -:10E0500009F49CC105E010E09FCFE091460AF0E092 -:10E06000EE0FFF1FEF56FA4B859194910F94EC93AE -:10E07000E091460AF0E0EE0FFF1FEB5DF94B859152 -:10E08000949140E060E00F94F68881110BC0E0911C -:10E09000460AF0E0EE0FFF1FE55AF84B8591949188 -:10E0A0000F94EC9381E00E94A054882309F46EC180 -:10E0B0000BE010E071CF87ED90E090937C19809396 -:10E0C0007B1970927A1960927919E091460AF0E012 -:10E0D000EE0FFF1FE753FA4B8591949140E060E00B -:10E0E0000F94F688882309F44EC108E010E054CF5D -:10E0F000E091460AF0E0EE0FFF1FE756FA4B8591DC -:10E1000094910E94DC4A2092FE093092FF094092CD -:10E11000000A5092010A20E030E040E752E46091AA -:10E1200062027091630280916402909165020F9483 -:10E1300076C04B015C012091FA093091FB094091B6 -:10E14000FC095091FD096091F6097091F7098091E1 -:10E15000F8099091F909A2EEB9E0BF93AF9302E0FC -:10E16000C02E0AE0D02EE12CF12C08EC12E40F9422 -:10E170001A0780ED97E00E94AD60E091460AF0E05A -:10E18000EE0FFF1FEB53FA4B859194910E94DC4AEE -:10E190000F900F9020E030E047E553E46091731951 -:10E1A0007091741980917519909176190F9495BF9B -:10E1B0006B017C0120E030E0A9010F9472C21816B7 -:10E1C0000CF051C020E030E040E450E4C701B6015B -:10E1D0000F9472C218160CF050C0E091460AF0E09D -:10E1E000EE0FFF1FEB53FA4B859194910E94DC4A8E -:10E1F00044E060E080E09AE10E94524062E080E00A -:10E200009AE10F9458BA8091731990917419A09162 -:10E210007519B091761989839A83AB83BC83CE013B -:10E2200001960F941D5BBC0180E09AE10F9457BAF0 -:10E2300067E675E080E09AE10F9457BA4AE050E053 -:10E2400067ED70E080E09AE10F94FEBA62EB75E052 -:10E2500080E09AE10F9457BA0F943F3B88EE93E029 -:10E260000E94AD6097CF20E030E040E450ECC70161 -:10E27000B6010F946FC087FDB0CF07E010E08CCEE1 -:10E280000E944ACCE091460AF0E0EE0FFF1FE354F3 -:10E29000FA4B859194910F94EC9380E00F94098749 -:10E2A0000F945948E091460AF0E0EE0FFF1FE75146 -:10E2B000F84B4591549162E080E007DB0E94AB5639 -:10E2C0000E944DCC54C0E091460AF0E0EE0FFF1FD3 -:10E2D000E754FA4B8591949141E060E00F94F68801 -:10E2E000882309F453C043C0E091460AF0E0EE0FE2 -:10E2F000FF1FEB55FA4B859194910F94EC93E091AD -:10E30000460AF0E0EE0FFF1FEF55FA4B859194910E -:10E310000F94EC9388E090E09093861A8093851A8E -:10E3200035C0E091460AF0E0EE0FFF1FEF54FA4BC4 -:10E330008591949140E060E00F940188882309F46E -:10E34000B7CE66EE87EF9FE00F94FFCC60E070E001 -:10E3500088EF9FE00F949748E091460AF0E0EE0FB7 -:10E36000FF1FEF52FA4B859194910F94EC9309E0C3 -:10E3700010E012CE60E08FE59FE00F941DCD06C047 -:10E3800003E010E009CE06E010E006CEEBEAF8E587 -:10E3900084917F01882341F00F94AD43FFEFEF1A82 -:10E3A000FF0AF7018491F6CF4AE050E0B80184E912 -:10E3B00098E00E9444450C30110508F03BC0F8017C -:10E3C000EF56FF4F0D9484C5E091460AF0E0EE0F42 -:10E3D000FF1FEB54FA4B17C0E091460AF0E0EE0F36 -:10E3E000FF1FE353FA4B0FC0E091460AF0E0EE0F37 -:10E3F000FF1FEB52FA4B07C0E091460AF0E0EE0F28 -:10E40000FF1FEF53FA4B0591149121C08091460AEA -:10E4100090E0880F991FFC01E353FA4B059114918A -:10E420001092691A8D589A4BFC01859194910F9422 -:10E43000B2490DC0E091460AF0E0EE0FFF1FEB5429 -:10E44000FA4B859194910930110521F08C01C80196 -:10E450000F94EC9381E00F9409870F94B14282E00E -:10E460000F943C840F900F900F900F90DF91CF91FD -:10E470001F910F91FF90EF90DF90CF90BF90AF90E2 -:10E480009F908F907F906F905F904F903F902F90D4 -:10E490000895AF92BF92CF92DF92EF92FF920F93C7 -:10E4A0001F93CF93DF93CDB7DEB7AA970FB6F8943B -:10E4B000DEBF0FBECDBF8091851A9091861A059759 -:10E4C00061F58091831A9091841A892BC1F480E8B8 -:10E4D0009AE00E9416B8E091460AF0E0EE0FFF1FA6 -:10E4E000EF5AF74B859194910F94B24983E0809352 -:10E4F000D40281E090E09093841A8093831A8091F3 -:10E50000831A9091841A019741F49091DE128091C0 -:10E51000DD12981711F40D94D87A8091851A909194 -:10E52000861A069709F08CC08091831A9091841AFC -:10E53000892B49F483E08093D40284E090E09093A7 -:10E54000841A8093831A8091831A9091841A019778 -:10E5500041F49091DE128091DD12981711F40D9420 -:10E56000F27A8091831A9091841A029709F04CC034 -:10E570009091DE128091DD12981346C08091660A58 -:10E580008F938091650A8F9385E09CE59F938F938D -:10E590008E010F5F1F4F1F930F930F94C1CA60E04E -:10E5A000C8010E94BCC565E278E0C8010F944AC961 -:10E5B0008DE59AE00F94ED4DBC01C8010F942BC975 -:10E5C00060E0C8010E94BCC50F900F900F900F90A3 -:10E5D0000F900F9080917B0A81110D943F7B61E039 -:10E5E00081E09CE50E94BCC561E08BEF9BE50E9449 -:10E5F000BCC561E087EF9BE50E94BCC581E090E06F -:10E600009093841A8093831A8091831A9091841A2C -:10E61000039741F49091DE128091DD12981711F466 -:10E620000D94447B8091831A9091841A049741F44D -:10E630009091DE128091DD12981711F40D94607B99 -:10E640008091851A9091861A089709F0FEC484ED8E -:10E6500092EEA6E2BFE38FA398A7A9A7BAA78FE37C -:10E6600099EFA9E5BCE38BA39CA3ADA3BEA30F9434 -:10E6700098B7605D7A488F4F9F4F6093E21970930F -:10E68000E3198093E4199093E5198091831A90918E -:10E69000841A892B31F489E090E09093841A809356 -:10E6A000831A8091831A9091841A099759F4909152 -:10E6B000DE128091DD12981305C00E9477C6811189 -:10E6C0000D94AF7B8091831A9091841A089759F426 -:10E6D0009091DE128091DD12981305C00E9477C6DA -:10E6E00081110D94EB7B8091831A9091841A079786 -:10E6F00059F49091DE128091DD12981305C00E94AA -:10E7000077C681110D94307C8091831A9091841A80 -:10E71000069709F012C19091DE128091DD129813D4 -:10E720000CC10E9477C6882309F407C10F9498B7DB -:10E73000605D7A488F4F9F4F6093E2197093E319A1 -:10E740008093E4199093E519AA24A394B12C00E0D6 -:10E7500010E061E078E0CE0101960F944AC9B8015B -:10E76000882777FD8095982F0F9411C12DEC3CECF4 -:10E770004CEC5EE30F9444C39B01AC010F9496BF35 -:10E780009B01AC0160E070E08CE092E40F9495BFD7 -:10E790006F8F78A389A39AA3CE014F960F94ED4D66 -:10E7A000BC01CE0101960F942BC967E478E0CE013D -:10E7B00001960F942BC9CE0187960F94094FBC0187 -:10E7C000CE0101960F942BC960E0CE0101960E9404 -:10E7D000BCC56AE078E0CE0101960F944AC9B50144 -:10E7E000882777FD8095982F0F9411C12DEC3CEC74 -:10E7F0004CEC5EE30F9444C39B01AC0160E070E01D -:10E800008CE092E40F9495BF6B017C016F8F78A32D -:10E8100089A39AA3CE014F960F94ED4DBC01CE0172 -:10E8200001960F942BC967E478E0CE0101960F940E -:10E830002BC9CE0183960F94094FBC01CE010196DE -:10E840000F942BC960E0CE0101960E94BCC56FE019 -:10E8500078E0CE0101960F944AC9CF8ED8A2E9A2E2 -:10E86000FAA2CE014F960F94ED4DBC01CE01019658 -:10E870000F942BC967E478E0CE0101960F942BC961 -:10E88000CE0187960F94094FBC01CE0101960F94DB -:10E890002BC960E0CE0101960E94BCC56AE078E019 -:10E8A000CE0101960F944AC90F5F1F4FB801882708 -:10E8B00077FD8095982F0F9411C12DEC3CEC4CEC1A -:10E8C0005EE30F9444C39B01AC010F9496BF9B0180 -:10E8D000AC0160E070E08CE092E40F9495BF6F8F24 -:10E8E00078A389A39AA3CE014F960F94ED4DBC0156 -:10E8F000CE0101960F942BC967E478E0CE01019612 -:10E900000F942BC9CE0183960F94094FBC01CE0101 -:10E9100001960F942BC960E0CE0101960E94BCC500 -:10E9200022E0A20EB11C0430110509F012CF85E0DF -:10E9300090E09093841A8093831A8091831A909127 -:10E94000841A059709F012C19091DE128091DD12B0 -:10E9500098130CC10E9477C6882309F407C10F944D -:10E9600098B7605D7A488F4F9F4F6093E21970931C -:10E97000E3198093E4199093E519A9E0AA2EB12C2C -:10E9800004E010E061E078E0CE0101960F944AC9FE -:10E99000B801882777FD8095982F0F9411C12DEC31 -:10E9A0003CEC4CEC5EE30F9444C39B01AC010F9430 -:10E9B00096BF9B01AC0160E070E08CE092E40F94A4 -:10E9C00095BF6F8F78A389A39AA3CE014F960F941A -:10E9D000ED4DBC01CE0101960F942BC967E478E0A0 -:10E9E000CE0101960F942BC9CE0187960F94094F43 -:10E9F000BC01CE0101960F942BC960E0CE010196B7 -:10EA00000E94BCC56AE078E0CE0101960F944AC925 -:10EA1000B501882777FD8095982F0F9411C12DECB3 -:10EA20003CEC4CEC5EE30F9444C39B01AC0160E012 -:10EA300070E08CE092E40F9495BF6B017C016F8FC6 -:10EA400078A389A39AA3CE014F960F94ED4DBC01F4 -:10EA5000CE0101960F942BC967E478E0CE010196B0 -:10EA60000F942BC9CE0183960F94094FBC01CE01A0 -:10EA700001960F942BC960E0CE0101960E94BCC59F -:10EA80006FE078E0CE0101960F944AC9CF8ED8A2EC -:10EA9000E9A2FAA2CE014F960F94ED4DBC01CE0132 -:10EAA00001960F942BC967E478E0CE0101960F948C -:10EAB0002BC9CE0187960F94094FBC01CE01019658 -:10EAC0000F942BC960E0CE0101960E94BCC56AE09C -:10EAD00078E0CE0101960F944AC90F5F1F4FB8012D -:10EAE000882777FD8095982F0F9411C12DEC3CEC71 -:10EAF0004CEC5EE30F9444C39B01AC010F9496BFB2 -:10EB00009B01AC0160E070E08CE092E40F9495BF53 -:10EB10006F8F78A389A39AA3CE014F960F94ED4DE2 -:10EB2000BC01CE0101960F942BC967E478E0CE01B9 -:10EB300001960F942BC9CE0183960F94094FBC0107 -:10EB4000CE0101960F942BC960E0CE0101960E9480 -:10EB5000BCC582E0A80EB11C0830110509F012CF27 -:10EB600084E090E09093841A8093831A8091831AB2 -:10EB70009091841A049709F012C19091DE1280914D -:10EB8000DD1298130CC10E9477C6882309F407C1CF -:10EB90000F9498B7605D7A488F4F9F4F6093E2194A -:10EBA0007093E3198093E4199093E519F1E1AF2E86 -:10EBB000B12C08E010E061E078E0CE0101960F94FE -:10EBC0004AC9B801882777FD8095982F0F9411C105 -:10EBD0002DEC3CEC4CEC5EE30F9444C39B01AC0188 -:10EBE0000F9496BF9B01AC0160E070E08CE092E472 -:10EBF0000F9495BF6F8F78A389A39AA3CE014F96E8 -:10EC00000F94ED4DBC01CE0101960F942BC967E422 -:10EC100078E0CE0101960F942BC9CE0187960F9410 -:10EC2000094FBC01CE0101960F942BC960E0CE01C3 -:10EC300001960E94BCC56AE078E0CE0101960F946F -:10EC40004AC9B501882777FD8095982F0F9411C187 -:10EC50002DEC3CEC4CEC5EE30F9444C39B01AC0107 -:10EC600060E070E08CE092E40F9495BF6B017C0152 -:10EC70006F8F78A389A39AA3CE014F960F94ED4D81 -:10EC8000BC01CE0101960F942BC967E478E0CE0158 -:10EC900001960F942BC9CE0183960F94094FBC01A6 -:10ECA000CE0101960F942BC960E0CE0101960E941F -:10ECB000BCC56FE078E0CE0101960F944AC9CF8EB3 -:10ECC000D8A2E9A2FAA2CE014F960F94ED4DBC0155 -:10ECD000CE0101960F942BC967E478E0CE0101962E -:10ECE0000F942BC9CE0187960F94094FBC01CE011A -:10ECF00001960F942BC960E0CE0101960E94BCC51D -:10ED00006AE078E0CE0101960F944AC90F5F1F4F69 -:10ED1000B801882777FD8095982F0F9411C12DECAD -:10ED20003CEC4CEC5EE30F9444C39B01AC010F94AC -:10ED300096BF9B01AC0160E070E08CE092E40F9420 -:10ED400095BF6F8F78A389A39AA3CE014F960F9496 -:10ED5000ED4DBC01CE0101960F942BC967E478E01C -:10ED6000CE0101960F942BC9CE0183960F94094FC3 -:10ED7000BC01CE0101960F942BC960E0CE01019633 -:10ED80000E94BCC5E2E0AE0EB11C0C30110509F0CA -:10ED900012CF83E090E09093841A8093831A80913D -:10EDA000831A9091841A039709F012C19091DE1290 -:10EDB0008091DD1298130CC10E9477C6882309F454 -:10EDC00007C10F9498B7605D7A488F4F9F4F60934B -:10EDD000E2197093E3198093E4199093E519E9E13E -:10EDE000AE2EB12C0CE010E061E078E0CE0101968F -:10EDF0000F944AC9B801882777FD8095982F0F9402 -:10EE000011C12DEC3CEC4CEC5EE30F9444C39B0130 -:10EE1000AC010F9496BF9B01AC0160E070E08CE008 -:10EE200092E40F9495BF6F8F78A389A39AA3CE0124 -:10EE30004F960F94ED4DBC01CE0101960F942BC956 -:10EE400067E478E0CE0101960F942BC9CE01879636 -:10EE50000F94094FBC01CE0101960F942BC960E0BD -:10EE6000CE0101960E94BCC56AE078E0CE01019611 -:10EE70000F944AC9B501882777FD8095982F0F9484 -:10EE800011C12DEC3CEC4CEC5EE30F9444C39B01B0 -:10EE9000AC0160E070E08CE092E40F9495BF6B01F0 -:10EEA0007C016F8F78A389A39AA3CE014F960F940C -:10EEB000ED4DBC01CE0101960F942BC967E478E0BB -:10EEC000CE0101960F942BC9CE0183960F94094F62 -:10EED000BC01CE0101960F942BC960E0CE010196D2 -:10EEE0000E94BCC56FE078E0CE0101960F944AC93C -:10EEF000CF8ED8A2E9A2FAA2CE014F960F94ED4D83 -:10EF0000BC01CE0101960F942BC967E478E0CE01D5 -:10EF100001960F942BC9CE0187960F94094FBC011F -:10EF2000CE0101960F942BC960E0CE0101960E949C -:10EF3000BCC56AE078E0CE0101960F944AC90F5F24 -:10EF40001F4FB801882777FD8095982F0F9411C126 -:10EF50002DEC3CEC4CEC5EE30F9444C39B01AC0104 -:10EF60000F9496BF9B01AC0160E070E08CE092E4EE -:10EF70000F9495BF6F8F78A389A39AA3CE014F9664 -:10EF80000F94ED4DBC01CE0101960F942BC967E49F -:10EF900078E0CE0101960F942BC9CE0183960F9491 -:10EFA000094FBC01CE0101960F942BC960E0CE0140 -:10EFB00001960E94BCC5F2E0AF0EB11C00311105F4 -:10EFC00009F012CF82E090E09093841A8093831A24 -:10EFD0008091831A9091841A029751F49091DE12D5 -:10EFE0008091DD12981304C00E9477C68111ADC4D0 -:10EFF0008091831A9091841A019739F59091DE12CD -:10F000008091DD12981321C00E9477C68823E9F011 -:10F01000E091460AF0E0EE0FFF1FED58FA4B8591A4 -:10F0200094910F94B2491092841A1092831A1092FC -:10F03000861A1092851A8FE59FE00F94EDCC8130EF -:10F0400021F48AE090E00F94AC6F8091851A909142 -:10F05000861A029709F02FC18091831A9091841A21 -:10F06000892B49F486E090E09093841A8093831A68 -:10F0700081E080933A0A8091831A9091841A0197D3 -:10F0800039F49091DE128091DD12981709F4A3C42F -:10F090008091831A9091841A029739F49091DE122C -:10F0A0008091DD12981709F4B2C48091831A90916F -:10F0B000841A039739F49091DE128091DD1298172B -:10F0C00009F4C4C48091831A9091841A049739F486 -:10F0D0009091DE128091DD12981709F4C3C48091DB -:10F0E000831A9091841A059759F59091DE128091B8 -:10F0F000DD12981325C0E091460AF0E0EE0FFF1FE5 -:10F10000EB5CF84B859194910F94B24961E08EE8E5 -:10F1100099E50E94BCC561E081E899E50E94BCC503 -:10F120008091E709882309F4C2C48091E809882303 -:10F1300009F4BDC484E090E09093841A8093831A0C -:10F140008091831A9091841A069739F49091DE1277 -:10F150008091DD12981709F4ADC48091831A9091C3 -:10F16000841A079709F09AC09091DE128091DD12FF -:10F17000981394C00F945948E091460AF0E0EE0FBE -:10F18000FF1FED50FA4B4591549160E080E00F94E1 -:10F19000656C62E474E080E09AE10F9457BA41E054 -:10F1A00060E080E09AE10E94524062E676E080E012 -:10F1B0009AE10F9457BAE091460AF0E0EE0FFF1F74 -:10F1C000EB59F64B4591549161E081E00F94656CE9 -:10F1D000E091460AF0E0EE0FFF1FE551FA4B459132 -:10F1E000549162E081E00F94656CE091460AF0E092 -:10F1F000EE0FFF1FEF54F74B4591549163E081E010 -:10F200000F94656C84E090E090931802809317024D -:10F2100000E010E0FF24F3940F94112A81E00E9493 -:10F22000CF602091A81A332727FD3095C801821B93 -:10F23000930B97FF03C091958195910905970CF069 -:10F2400068C40F94364B882339F30F94364B8111E1 -:10F25000FCCF6AE070E080E090E00F94C7B70F94B5 -:10F26000364B8111FCCF82E090E09093180280939E -:10F2700017028FEF8F0D61E0813009F498C482305E -:10F2800009F498C4811199C48CE799E50E94BCC522 -:10F2900083E090E09093841A8093831A8091831A7C -:10F2A0009091841A089739F49091DE128091DD12C2 -:10F2B000981709F485C48091851A9091861A03974E -:10F2C00021F41092861A1092851A8091851A9091D5 -:10F2D000861A049709F05DC08091831A9091841A70 -:10F2E000892B49F486E090E09093841A8093831AE6 -:10F2F00081E080933A0A8091831A9091841A019751 -:10F3000039F49091DE128091DD12981709F45FC4F0 -:10F310008091831A9091841A029739F49091DE12A9 -:10F320008091DD12981709F45DC48091831A909141 -:10F33000841A039739F49091DE128091DD129817A8 -:10F3400009F457C48091831A9091841A049739F470 -:10F350009091DE128091DD12981709F451C48091CA -:10F36000831A9091841A059739F49091DE12809156 -:10F37000DD12981709F455C48091831A9091841A6C -:10F38000069739F49091DE128091DD12981709F4F6 -:10F390004FC48091851A9091861A079709F081C40D -:10F3A0008091831A9091841A892BA9F483E090E0CC -:10F3B0009093380A8093370A21E030E03093360A80 -:10F3C0002093350A20933A0A23E02093D4029093A5 -:10F3D000841A8093831A8091831A9091841A0397D8 -:10F3E00039F49091DE128091DD12981709F433C43C -:10F3F0008091831A9091841A029709F098C08091A5 -:10F400004C19882309F493C010924C191092360AB3 -:10F410001092350AE091460AF0E0EE0FFF1FE9591D -:10F42000F84B859194910F94B24920E030E0A90106 -:10F430006091591970915A1980915B1990915C19DA -:10F440000F946FC081111EC020E030E0A9016091CF -:10F4500055197091561980915719909158190F9418 -:10F460006FC081110FC020E030E0A90160915119F7 -:10F470007091521980915319909154190F946FC043 -:10F480008823C1F168E178E0CE0101960F944AC962 -:10F4900089E599E10F94ED4DBC01CE0101960F94E1 -:10F4A0002BC96FE178E0CE0101960F942BC985E559 -:10F4B00099E10F94ED4DBC01CE0101960F942BC93B -:10F4C00062E278E0CE0101960F942BC981E599E1C3 -:10F4D0000F94ED4DBC01CE0101960F942BC960E055 -:10F4E000CE0101960E94BCC561E08AE399E50E94C5 -:10F4F000BCC50DC0EAE0F9E584918F01882339F09D -:10F500000F94AD430F5F1F4FF8018491F7CF0F9415 -:10F5100098B76093751A7093761A8093771A9093C0 -:10F52000781A81E090E09093841A8093831A8091F6 -:10F53000831A9091841A019709F0B3C30F9498B776 -:10F540000091751A1091761A2091771A3091781AD5 -:10F55000601B710B820B930B613D77408105910518 -:10F5600008F49FC3E091460AF0E0EE0FFF1FED584C -:10F57000FA4B859194910F94B2491092380A1092E7 -:10F58000370A10923A0A80E090E0A2E5B3E4809353 -:10F59000D8029093D902A093DA02B093DB021092C2 -:10F5A000841A1092831A1092861A1092851A79C3BF -:10F5B000E091460AF0E0EE0FFF1FEF5CF84B8591FB -:10F5C00094910F94B24981E08093821A0E946867F7 -:10F5D0001092861A1092851A1092841A1092831A29 -:10F5E0000D948D728091770A8F938091760A8F9314 -:10F5F0008EE09CE59F938F938E010F5F1F4F1F93AB -:10F600000F930F94C1CA60E0C8010E94BCC510925C -:10F61000821A0F9498B7C090510AD090520AE09085 -:10F62000530AF090540A00914D0A10914E0A20910D -:10F630004F0A3091500AC01AD10AE20AF30AC60EE4 -:10F64000D71EE81EF91EC092510AD092520AE092CB -:10F65000530AF092540A80E89AE00E940FB8109280 -:10F66000841A1092831A1092861A1092851A0F909B -:10F670000F900F900F900F900F900D94B17261E06A -:10F6800081EF9BE50D94FC726AE278E0CE01019671 -:10F690000F944AC987E69AE00F941D5BBC01CE0126 -:10F6A00001960F942BC960E0CE0101960E94BCC563 -:10F6B00082E090E09093841A8093831A0D941273E1 -:10F6C00061E378E0CE0101960F944AC987E69AE09B -:10F6D0000F941D5BBC01CE0101960F942BC960E015 -:10F6E000CE0101960E94BCC561E08DEE9BE50E94B3 -:10F6F000BCC568E378E0CE0101960F944AC985E560 -:10F700009AE00F94ED4DBC01CE0101960F942BC9E8 -:10F7100065E178E0CE0101960F942BC989E59AE066 -:10F720000F94ED4DBC01CE0101960F942BC960E002 -:10F73000CE0101960E94BCC5E091460AF0E0EE0FB2 -:10F74000FF1FE55FF84B859194910F94B24983E0D8 -:10F7500090E09093841A8093831A0D94207361E053 -:10F7600088EE9BE50E94BCC561E08EED9BE50E94A2 -:10F77000BCC561E085ED9BE50E94BCC561E08CECF9 -:10F780009BE50E94BCC561E082EC9BE50E94BCC584 -:10F79000E091460AF0E0EE0FFF1FEB52F84B859127 -:10F7A000949161E00E94BCC561E08EEB9BE50E94F4 -:10F7B000BCC561E08AEB9BE50E94BCC561E081EBC2 -:10F7C0009BE50E94BCC588E090E09093841A8093EA -:10F7D000831A0D9462730F94594801E020E040E0D1 -:10F7E00050E0BA0186ED91E00F947B3D61E08BE93A -:10F7F0009BE50E94BCC561E083E89BE50E94BCC517 -:10F8000061E08AE79BE50E94BCC561E086E79BE575 -:10F810000E94BCC561E082E79BE50E94BCC561E037 -:10F820008EE69BE50E94BCC561E085E59BE50E94F4 -:10F83000BCC561E081E49BE50E94BCC561E086E354 -:10F840009BE50E94BCC561E08DE29BE50E94BCC5C2 -:10F8500087E090E09093841A8093831A0D947373D9 -:10F860000F9498B7605D7A488F4F9F4F6093E2196D -:10F870007093E3198093E4199093E51961E081E2B4 -:10F880009BE50E94BCC561E088E19BE50E94BCC588 -:10F8900061E087E09BE50E94BCC561E087EF9AE5E7 -:10F8A0000E94BCC561E081EE9AE50E94BCC561E0A2 -:10F8B0008BEC9AE50E94BCC561E086EB9AE50E945C -:10F8C000BCC561E081EA9AE50E94BCC561E08BE8B5 -:10F8D0009AE50E94BCC561E086E79AE50E94BCC536 -:10F8E00061E082E69AE50E94BCC561E08EE49AE59B -:10F8F0000E94BCC561E089E39AE50E94BCC561E055 -:10F9000084E29AE50E94BCC561E080E19AE50E942C -:10F91000BCC56DE378E0CE0101960F944AC9CE01D3 -:10F9200087960F94094FBC01CE0101960F942BC905 -:10F9300060E0CE0101960E94BCC586E090E0909305 -:10F94000841A8093831A0D9484730F9498B7605D22 -:10F950007A488F4F9F4F6093E2197093E319809319 -:10F96000E4199093E51961E087EF99E50E94BCC521 -:10F9700061E082EF99E50E94BCC561E08AEE99E5FD -:10F980000E94BCC561E082EE99E50E94BCC561E0C1 -:10F9900081ED99E50E94BCC561E08FEB99E50E947D -:10F9A000BCC561E08BEB99E50E94BCC50F9498B78C -:10F9B00061507109810991096093E2197093E3190B -:10F9C0008093E4199093E51981E090E09093841A74 -:10F9D0008093831A0DCB1092841A1092831A10927E -:10F9E000861A1092851AE091460AF0E0EE0FFF1F8A -:10F9F000ED58FA4B859194910F94B2491092380AC0 -:10FA00001092370A10923A0A1092821A41CB109241 -:10FA10007A191092791961E083EB99E50E94BCC5CF -:10FA20000F94112AE091460AF0E0EE0FFF1FED5807 -:10FA3000FA4B859194910F94B2491092D10981E0CB -:10FA400090E09093841A8093831A2FCB61E08FEA21 -:10FA500099E50E94BCC582E090E09093841A80935F -:10FA6000831A30CBE091460AF0E0EE0FFF1FE35B14 -:10FA7000F84B859194910F94B24961E08BEA99E536 -:10FA80000E94BCC561E087EA99E50E94BCC561E0BF -:10FA900082E999E50E94BCC51092EC191092EB190D -:10FAA00083E090E09093841A8093831A18CB83E0CC -:10FAB00090E042CBE091460AF0E0EE0FFF1FEB5CD6 -:10FAC000F84B859194910F94B24911E01093D109AC -:10FAD00010927A191092791910927C1910927B1950 -:10FAE00010927E1910927D191092801910927F1930 -:10FAF0000F94112A10933A0A82E090E09093380A0A -:10FB00008093370A85E090E09093841A8093831A5B -:10FB100024CB201731070CF4FA94021713070CF4C6 -:10FB2000F39423E02F152CF01F142CF0FF24F394F2 -:10FB300002C023E0F22E41E060E080E09AE10E9402 -:10FB4000524062ED77E080E09AE10F9457BA42E0CC -:10FB500060E080E09AE10E94524062ED77E080E050 -:10FB60009AE10F9457BA43E060E080E09AE10E9486 -:10FB7000524062ED77E080E09AE10F9457BA4F2D42 -:10FB800060E080E09AE10E94524062E676E080E028 -:10FB90009AE10F9457BA0091A81A112707FD109502 -:10FBA00064E670E080E090E00F94C7B74ACB85E749 -:10FBB00099E56CCB8EE699E569CB89E699E566CB4C -:10FBC00087E090E09093841A8093831A74CB0F940B -:10FBD000A86B1092841A1092831A1092861A1092AF -:10FBE000851A96CB81E090E09093841A8093831AD3 -:10FBF0009CCB82E090E09093841A8093831AA2CBEE -:10FC000061E085E699E50E94BCC561E080E599E583 -:10FC10000E94BCC583E090E09093841A8093831A7D -:10FC20009ECB84E090E09093841A8093831AA4CBB7 -:10FC300061E08CE499E50E94BCC561E08FE399E541 -:10FC40000E94BCC50F94901D85E090E09093841AAB -:10FC50008093831A9ECB6AE478E0CE0101960F94DC -:10FC60004AC988ED92E00F941D5BBC01CE0101965C -:10FC70000F942BC960E0CE0101960E94BCC5E091B3 -:10FC8000460AF0E0EE0FFF1FED59F84B8591949175 -:10FC90000F94B24982E090E09093841A8093831A83 -:10FCA000A7CBAA960FB6F894DEBF0FBECDBFDF91EB -:10FCB000CF911F910F91FF90EF90DF90CF90BF9069 -:10FCC000AF9008958F929F92AF92BF92CF92DF92A2 -:10FCD000EF92FF920F931F93CF93DF93CDB7DEB7D1 -:10FCE00028970FB6F894DEBF0FBECDBF8091D70224 -:10FCF000813009F03DC01092D7020F948648809160 -:10FD0000691A81110FC0E091460AF0E0EE0FFF1F63 -:10FD1000ED58FA4B6591749144E150E084E59AE125 -:10FD20000F94D2C88DEE9FE00F94EDCC8F3F01F57C -:10FD30008EEE9FE00F94EDCC8F3FD1F48FEE9FE0DD -:10FD40000F94EDCC8F3FA1F480EF9FE00F94EDCCAA -:10FD50008F3F71F440E050E0BA018DEE9FE00F94C8 -:10FD600011CD40E050E0BA0181EF9FE00F9411CD3A -:10FD70008091ED19882321F081508093ED1903C003 -:10FD800081E08093D4028091D402882309F4BEC418 -:10FD900080918A1A8F5F80938A1A8E3129F40F948A -:10FDA000A54210928A1A0EC06AE00F9412C59111F2 -:10FDB00009C020E044E064E180E09AE10E946441EF -:10FDC0000F943F3B20E030E040E05FE36091731927 -:10FDD0007091741980917519909176190F9496BF4E -:10FDE0000F94DEC078876F8360917B1970917C19C6 -:10FDF000882777FD8095982F0F9411C120E030E07F -:10FE000040E05FE30F9496BF0F94DEC07E836D8366 -:10FE100040E060E080E09AE10E94524062E080E0D1 -:10FE20009AE10F9458BACE0107960F94C250BC01C4 -:10FE300080E09AE10F9457BA6FE280E09AE10F9464 -:10FE400058BACE0105960F94355BBC0180E09AE16B -:10FE50000F9457BA8DE99CE50F94FF5B8AE99CE506 -:10FE60000F94FF5B40E06AE080E09AE10E9452401C -:10FE700086E99CE50F94FF5B8091370A9091380AE0 -:10FE8000019729F48EE89CE50F94FF5B20C02CEAD3 -:10FE900035EC47E257E36091FE097091FF098091CC -:10FEA000000A9091010A0F9496BF69837A838B832D -:10FEB0009C83CE0101960F94F04FBC0180E09AE143 -:10FEC0000F9457BA60E280E09AE10F9458BA41E08B -:10FED00060E080E09AE10E94524020E030E040E0A3 -:10FEE0005FE360915D1970915E1980915F19909147 -:10FEF00060190F9496BF0F94DEC078876F8360916E -:10FF0000791970917A19882777FD8095982F0F9429 -:10FF100011C120E030E040E05FE30F9496BF0F9402 -:10FF2000DEC07E836D8360E080E09AE10F9458BA72 -:10FF3000CE0107960F94C250BC0180E09AE10F9465 -:10FF400057BA6FE280E09AE10F9458BACE01059655 -:10FF50000F94355BBC0180E09AE10F9457BA8BE8AF -:10FF60009CE50F94FF5B88E89CE50F94FF5B41E004 -:10FF70006AE080E09AE10E94524085E89CE50F9497 -:10FF8000FF5B66E080E09AE10F9458BA88E592E062 -:10FF90000F94C250BC0180E09AE10F9457BA8EE7EB -:10FFA0009CE50F94FF5B42E060E080E09AE10E94F4 -:10FFB00052408091750A882319F08BE79CE502C0B6 -:10FFC00088E79CE50F94FF5B8091820A8823A9F162 -:10FFD0008091DE0C882319F18091880D9091890D14 -:10FFE000A0918A0DB0918B0D0097A105B105B9F0D4 -:10FFF000BC01CD016D597F4F8F4F9F4F24E630E0FC -:020000023000CC -:1000000040E050E00F9446C56091900D7091910DC5 -:100010008091920D9091930D0F9446C501C020E000 -:1000200030E03A832983CE0101960F94C250BC017F -:1000300080E09AE10F9457BA0DC08091750A882329 -:1000400029F083E79CE50F94FF5B09C08FE69CE5F0 -:100050000F94FF5B65E280E09AE10F9458BA8091BB -:10006000811A882389F18CE69CE50F94FF5B6091EF -:100070007F1A7091801A4AE050E080E09AE10F9474 -:10008000FEBA89E69CE50F94FF5B40E063E180E007 -:100090009AE10E9452400F9498B7C0906F0AD09096 -:1000A000700AE090710AF090720A6C197D098E094D -:1000B0009F0960367A4E8105910518F487E69CE524 -:1000C0000BC085E69CE508C042E06AE080E09AE16A -:1000D0000E94524083E69CE50F94FF5B42E06BE098 -:1000E00080E09AE10E94524081E69CE50F94FF5B1C -:1000F00067E080E09AE10F9458BA8091A00990914E -:10010000A109A091A209B091A309892B8A2B8B2B5D -:10011000E1F10F9498B730E6C32E3AEED32EE12CDE -:10012000F12CA70196010F9446C549015A0160912F -:10013000A0097091A1098091A2099091A309A7013A -:1001400096010F9446C5C401821B930B6CE370E0CB -:100150000F941FC5182F6983CE0101960F94894D06 -:10016000BC0180E09AE10F9457BA6AE380E09AE11B -:100170000F9458BA1983CE0101960F94894DBC0192 -:1001800080E09AE10F9457BA04C08BE59CE50F9488 -:10019000FF5B88E59CE50F94FF5B43E060E080E057 -:1001A0009AE10E94524080913D0A90913E0A892B2B -:1001B00019F081E080933A0A8091820A882371F1D4 -:1001C0006DE97AE08DE19AE10F9441C9892B31F113 -:1001D0000DE11AE1F80101900020E9F7AF0141506B -:1001E00051094D515A4160E070E0C8010F9411C9A6 -:1001F0008DE99AE09F938F9385E59CE59F938F937C -:100200001F930F930F94C1CA1092531A1092521A4F -:100210000F900F900F900F900F900F909091820A77 -:1002200080913A0A992309F454C0811152C0EDE932 -:10023000FAE001900020E9F7EE59FA40759708F4CA -:1002400045C00091521A1091531AC12CD12C8091A3 -:10025000521A9091531A9801281B390B24313105F9 -:1002600034F001969093531A8093521AFDC1C11431 -:10027000D104B9F798012058354F7901F901958DCE -:10028000602F681B43E0911114C080E09AE10E9446 -:100290005240F701648D80E09AE10F9458BA1092B1 -:1002A000531A1092521A00E010E0CC24C394D12CBF -:1002B000CECF80E09AE10E945240F701648D80E049 -:1002C0009AE10F9458BA0F5F1F4FC1CF6DE17AE1E9 -:1002D000D0C1882309F4CBC180913D0A90913E0A98 -:1002E000892B09F48EC080913B0A90913C0A0196BB -:1002F0008E30910528F490933C0A80933B0A04C009 -:1003000010923C0A10923B0A43E067E080E09AE1D9 -:100310000E94524087E49CE50F94FF5B00E010E0F0 -:1003200080913B0A90913C0A0817190778F467E01E -:10033000600F43E080E09AE10E9452406EE280E06C -:100340009AE10F9458BA0F5F1F4FEACF80913D0A90 -:1003500090913E0A8230910531F188F4019709F0BD -:1003600050C043E060E080E09AE10E945240E0919A -:10037000460AF0E0EE0FFF1FE95DF74B2FC0833018 -:100380009105F9F0049709F03CC043E060E080E09B -:100390009AE10E945240E091460AF0E0EE0FFF1F02 -:1003A000E15DF64B20C043E060E080E09AE10E940E -:1003B0005240E091460AF0E0EE0FFF1FED5DF74B73 -:1003C00012C043E060E080E09AE10E945240E09178 -:1003D000460AF0E0EE0FFF1FE55DF64B8591949124 -:1003E0000F94FF5B0EC0859194910F94FF5B109268 -:1003F0003E0A10923D0A10923C0A10923B0A10925B -:100400003A0A8091370A9091380A019709F07CC026 -:100410008091350A9091360A8B30910560F143E066 -:1004200060E080E09AE10E94524082E39CE50F94F4 -:10043000FF5B43E060E080E09AE10E945240E0917F -:10044000460AF0E0EE0FFF1FE95EF74B85919491AD -:100450000F94FF5B8EE29CE50F94FF5B6091350A81 -:100460007091360A6A5071094AE050E080E09AE1E2 -:100470000F9411BB49C00397E1F4E091460AF0E004 -:10048000EE0FFF1FED58FA4B859194910F94FF5B8F -:10049000E091460AF0E0EE0FFF1FED58FA4B859110 -:1004A00094910F94B24910923A0A1092380A10921D -:1004B000370A8091350A9091360A0497079720F5FC -:1004C00043E060E080E09AE10E9452408AE19CE5CE -:1004D0000F94FF5B43E060E080E09AE10E945240AD -:1004E000E091460AF0E0EE0FFF1FE55EF74B8591C5 -:1004F00094910F94FF5B8091350A9091360A019791 -:100500009093360A8093350A8091370A9091380A81 -:10051000029731F464E57AE180E09AE10F9457BAEA -:100520008091370A9091380A0397A1F564E57AE142 -:1005300080E09AE10F9457BA20914F1930915019E9 -:1005400080914D1990914E19821793071CF180915B -:10055000350A9091360A892BE9F043E06AE080E0A1 -:100560009AE10E9452408FE499E10F94C250BC017D -:1005700080E09AE10F9457BA6FE280E09AE10F941D -:1005800058BA8DE499E10F94355BBC0180E09AE1A3 -:100590000F9457BA8091370A9091380A049799F5C9 -:1005A00043E060E080E09AE10E945240E091460A18 -:1005B000F0E0EE0FFF1FEF5EF94B859194910F94E1 -:1005C000FF5B43E06CE080E09AE10E945240809142 -:1005D000360A8F938091350A8F9384E598E09F9334 -:1005E0008F938E010F5F1F4F1F930F930F9493CA2A -:1005F000B80180E09AE10F9457BA0F900F900F90D6 -:100600000F900F900F908091370A9091380A0597BC -:1006100059F543E060E080E09AE10E945240E091A9 -:10062000460AF0E0EE0FFF1FE15AF84B85919491D6 -:100630000F94FF5B8091350A9091360A89379105B6 -:1006400098F487E19CE50F94FF5B6091350A709107 -:10065000360A4AE050E080E09AE10F9411BB60E274 -:1006600080E09AE10F9458BA04E51AE10BC064E502 -:100670007AE180E09AE10F9457BAF6CFFAE10836B2 -:100680001F0759F0F80181918F018032BCF760E2B9 -:1006900080E09AE10F9458BAF1CF8091811A8823B3 -:1006A00051F18091DD029091DE0201979093DE027C -:1006B0008093DD021816190654F084EB90E09093B5 -:1006C000DE028093DD0280E090E00F94515680912D -:1006D000DD029091DE028A30910529F08D9759F460 -:1006E00085E190E006C08091820A882321F084E1B0 -:1006F00090E00F9451568AE08093ED198091851A0D -:100700009091861A892B11F00F9449728091FF19EC -:1007100082FB882780F99091EC19992399F09091A8 -:10072000EB19992339F0811120C01092EB19109226 -:10073000EC191BC08823C9F00F946C3D81E08093B5 -:10074000EB1913C0882389F08091851A9091861A3D -:10075000029759F001E021E040E050E0BA0186EA5A -:1007600091E00F947B3D0F94A542809158029091A7 -:1007700059022091F9193091FA198436910534F40F -:10078000820F931F853691054CF416C0843691056F -:1007900099F0820F931F8436910574F41092F91921 -:1007A0001092FA191092FB191092FC1984E690E04D -:1007B0009093590280935802209158023091590227 -:1007C0008091F9199091FA192436310569F48B302A -:1007D00091051CF0865A9F4F09C0863F2FEF920764 -:1007E0008CF482599F4F02C0820F931F909359023D -:1007F000809358021092F9191092FA191092FB196D -:100800001092FC1980915802909159028A309105FA -:100810001CF48AE090E005C0883E934034F087EEF7 -:1008200093E090935902809358028091811A882313 -:1008300081F08091DC0281110CC043E060E080E037 -:100840009AE10E945240E9E3F7E4859194910F9474 -:10085000FF5B28960FB6F894DEBF0FBECDBFDF91C9 -:10086000CF911F910F91FF90EF90DF90CF90BF90AD -:10087000AF909F908F900895CF92DF92EF92FF926A -:100880009091D402981710F48093D4028091D302EF -:10089000882309F4F3C00F94E74980910301817024 -:1008A00091E089272091F4198217F9F082E0809372 -:1008B000D40280910301817089278093F4190F94E9 -:1008C000A5428091F419882309F4CCC080E89AE00D -:1008D0000E942BC0E091460AF0E0EE0FFF1FE950A6 -:1008E000F94B859194910F94B249C090EE19D09034 -:1008F000EF19E090F019F090F1190F9498B7C6161F -:10090000D706E806F90608F09AC08091A81A482F81 -:10091000552747FD509557FF03C051954195510903 -:1009200042305105A4F19091D402911103C091E09D -:100930009093D40287FD8F5F482F4595552747FD3B -:100940005095652F752F8091F9199091FA19A09102 -:10095000FB19B091FC19840F951FA61FB71F809338 -:10096000F9199093FA19A093FB19B093FC191092FE -:10097000A81A0F9498B7605D7A488F4F9F4F609385 -:10098000E2197093E3198093E4199093E51980912B -:10099000FF1982FF0EC00F9498B7605D7A488F4FA1 -:1009A0009F4F6093E2197093E3198093E419909339 -:1009B000E519E091D502F091D6021995C090E2199F -:1009C000D090E319E090E419F090E5190F9498B7EE -:1009D000C616D706E806F906B8F4E091D502F091FC -:1009E000D60281E0EE32F80779F0309731F081E0FD -:1009F00080936A1A199510926A1A0F9459480F94A5 -:100A0000B14282E08093D4028091D402823011F40A -:100A10000F9459488091D402882319F08150809313 -:100A2000D4020F9498B76C597F4F8F4F9F4F6093AC -:100A3000EE197093EF198093F0199093F1190E94B9 -:100A4000A5B0811101C0A5D40F944C498091851A9D -:100A50009091861A089791F4FF90EF90DF90CF90D5 -:100A60000D94497280E89AE00E940BB8E091460A22 -:100A7000F0E0EE0FFF1FE351F94B33CFFF90EF9003 -:100A8000DF90CF900895CF92DF92EF92FF920F9474 -:100A9000594840E061E080E09AE10E945240E091D4 -:100AA000460AF0E0EE0FFF1FE559F94B859194914E -:100AB0000F94FF5B6091F9197091FA19882777FDFF -:100AC0008095982F0F9411C12091D8023091D902AE -:100AD0004091DA025091DB020F9496BF6B017C01CA -:100AE00020E030E848E953E40F9472C218164CF045 -:100AF000C092D802D092D902E092DA02F092DB02E0 -:100B00000CC080E090E8A8E9B3E48093D802909309 -:100B1000D902A093DA02B093DB0220E030E040E794 -:100B200051E46091D8027091D9028091DA029091DB -:100B3000DB020F946FC087FF0CC080E090E0A0E75D -:100B4000B1E48093D8029093D902A093DA02B093D3 -:100B5000DB021092F9191092FA191092FB191092F7 -:100B6000FC1942E061E080E09AE10E94524088ED89 -:100B700092E00F941D5BBC0180E09AE10F9457BA9C -:100B80000F94364B882371F087E090E09093861A9B -:100B90008093851A0F94B14282E0FF90EF90DF902E -:100BA000CF906ACEFF90EF90DF90CF9008950F9393 -:100BB0001F9381E08093D109109209128091480A15 -:100BC000811108C08091740A811104C00F949F059F -:100BD0000E94F9FA0E9446C5E091460AF0E0EE0F45 -:100BE000FF1FEB5CF84B859194910F94B24982E022 -:100BF00043DE1092820A60E080E89AE00E94FAB92F -:100C00000F9498B760939C0970939D0980939E09F7 -:100C100090939F090091A0091091A1092091A20928 -:100C20003091A309601B710B820B930B0091510A49 -:100C30001091520A2091530A3091540A601B710B93 -:100C4000820B930B28EE33E040E050E00F9446C552 -:100C50001092510A1092520A1092530A1092540A9A -:100C600060913F0A7091400A8091410A9091420A36 -:100C70000E94DB5F0F94B14281E08093EC191092E7 -:100C8000EB191092841A1092831A82E090E09093EC -:100C9000861A8093851A80910101886080930101F2 -:100CA0009FB7F89480910201877F809302019FBFD4 -:100CB0001092E1091092E0091F910F91089540E010 -:100CC00060E080E09AE10E945240E091460AF0E044 -:100CD000EE0FFF1FE35EF94B859194910F94FF5B3C -:100CE00042E062E080E09AE10E945240E091460AD0 -:100CF000F0E0EE0FFF1FE357F84B859194910F94AE -:100D0000FF5B43E062E080E09AE10E945240E091A4 -:100D1000460AF0E0EE0FFF1FEB57FA4B85919491D6 -:100D20000F94FF5B42E060E080E09AE10E94524055 -:100D300062ED77E080E09AE10F9457BA43E060E01B -:100D400080E09AE10E94524062ED77E080E09AE113 -:100D50000F9457BA8091F9199091FA19A091FB1943 -:100D6000B091FC190397A105B10564F082E090E011 -:100D7000A0E0B0E08093F9199093FA19A093FB19C1 -:100D8000B093FC198091F9199091FA19A091FB196F -:100D9000B091FC19181619061A061B0664F081E0BA -:100DA00090E0A0E0B0E08093F9199093FA19A09335 -:100DB000FB19B093FC194091F9194F5F60E080E096 -:100DC0009AE10E94524062E676E080E09AE10F9458 -:100DD00057BA0F94364B8823D9F08091F919909126 -:100DE000FA19A091FB19B091FC190197A105B10561 -:100DF00011F40F94B1428091F9199091FA19A091D0 -:100E0000FB19B091FC190297A105B10509F4CFCEE9 -:100E100008959091D3029817D1F18093D30288233B -:100E2000B1F11092F9191092FA191092FB1910925F -:100E3000FC191092A81A0F9498B7605D7A488F4FEA -:100E40009F4F6093E2197093E3198093E419909394 -:100E5000E5190F9498B76150710981099109609360 -:100E6000EE197093EF198093F0199093F1190F9484 -:100E700059488091D5029091D6028E52914019F432 -:100E80000F94354802C00F94AD4782E0F5CC089529 -:100E90008F929F92AF92BF92CF92DF92EF92FF928A -:100EA0000F931F93CF93DF938C015B0180E0B1DF41 -:100EB0000F94594840E060E080E09AE10E9452407F -:100EC0007801812C912CC8010F94303B882319F0B4 -:100ED0000F5F1F4FF8CFF8018491882309F467C092 -:100EE000492D60E080E09AE10E945240C8010F94D1 -:100EF000A3C88431910508F084E17801E80EF11C63 -:100F0000F3E0E7019F1214C0843191F4CE010F94F5 -:100F1000303B882311F02196F9CFFE01849188237C -:100F200031F0E70122977E018824839401C0812C4F -:100F3000FE018491882309F455C0CE010F94303B03 -:100F4000811150C0FE01849192ED980F923008F407 -:100F500049C08C3209F446C096EC980F923008F4E0 -:100F600041C08F3309F43EC0813209F43BC00C17F5 -:100F70001D07A8F56E01F1E0CF1AD108C6010F9444 -:100F8000303B81112CC0E601F2CFF80164916E373D -:100F900009F460E280E09AE10F9458BA0F5F1F4FA6 -:100FA0000E151F0590F39394F4E09F128CCF8820C8 -:100FB00069F00F94F54743E063E180E09AE10E9415 -:100FC000524061E080E09AE10F9458BAF5019082B6 -:100FD000811003C080E090E007C0C70105C0C017C2 -:100FE000D107F1F27E01DCCFDF91CF911F910F91FC -:100FF000FF90EF90DF90CF90BF90AF909F908F9039 -:1010000008954F925F926F927F928F929F92AF92CC -:10101000BF92CF92DF92EF92FF92CF93DF93682E31 -:10102000592E462ED42E0E94DC4A7C010F9498B78C -:101030004B015C01C090A81AE70144E6742E82E3DC -:1010400090E00E94AD60442069F00F9498B7681951 -:1010500079098A099B09613375478105910510F06B -:101060008FEFB5C00F94112A81E00E94CF608C2DC4 -:10107000992787FD90952091A81A821B910927FD39 -:10108000939597FF03C09195819591090597ACF1D0 -:10109000209709F097C043E060E080E09AE10E9469 -:1010A00052408091A81AC81694F4DD2021F18BEDEE -:1010B00098E50F94FF5B43E067E080E09AE10E94CF -:1010C000524089ED98E50F94FF5BD12C14C08C152C -:1010D00094F4D11010C087ED98E50F94FF5B43E0C6 -:1010E00067E080E09AE10E94524085ED98E50F9418 -:1010F000FF5BDD24D394C090A81A0F94364B88234D -:10110000A9F00F94364B8111FCCF6AE070E080E0CB -:1011100090E00F94C7B70F94364B8111FCCF209706 -:1011200009F050C00F943F3B8D2D51C07A9409F0C7 -:1011300086CFE114F10441F0209711F4C62DD52D8E -:10114000CE010E94DC4AEC01209709F076CF43E003 -:1011500060E080E09AE10E945240DD2021F083EDC2 -:1011600098E50F94FF5B43E061E080E09AE10E9424 -:101170005240E091460AF0E0EE0FFF1FEB57FA4BAA -:10118000859194910F94FF5B43E067E080E09AE1E2 -:101190000E945240D11004C081ED98E50F94FF5B8E -:1011A00043E068E080E09AE10E945240E091460A04 -:1011B000F0E0EE0FFF1FE357F84B859194910F94E9 -:1011C000FF5B3BCFE114F10409F0BACFBDCFDF9153 -:1011D000CF91FF90EF90DF90CF90BF90AF909F9016 -:1011E0008F907F906F905F904F900895BF92CF92B5 -:1011F000DF92EF92FF92CF93DF93D62FC42F0E94FE -:10120000DC4A42E0CC23D9F060E080E09AE10E9421 -:1012100052408FEC98E50F94FF5BE091460AF0E0B6 -:10122000EE0FFF1FEB57FA4B859194910F94FF5BE4 -:1012300043E061E080E09AE10E9452401AC061E020 -:1012400080E09AE10E945240E091460AF0E0EE0F01 -:10125000FF1FEB57FA4B859194910F94FF5B43E08E -:1012600060E080E09AE10E9452408DEC98E50F9496 -:10127000FF5BE091460AF0E0EE0FFF1FE357F84BEB -:10128000859194910F94FF5B0F9498B76B017C014B -:10129000B090A81A84E090E090931802809317020F -:1012A000DD2369F00F9498B76C197D098E099F09A9 -:1012B000613375478105910510F08FEF62C00F947F -:1012C000112A81E00E94CF602B2D332727FD309516 -:1012D0008091A81A281B310987FD339537FF03C079 -:1012E000319521953109253031058CF142E060E0DE -:1012F00080E09AE10E9452408091A81AB81694F4B6 -:10130000CC2319F18BEC98E50F94FF5B43E060E090 -:1013100080E09AE10E94524089EC98E50F94FF5BCF -:10132000C0E013C08B158CF4C1110FC087EC98E599 -:101330000F94FF5B43E060E080E09AE10E9452403E -:1013400085EC98E50F94FF5BC1E0B090A81A0F946C -:10135000364B882309F4A4CF0F94364B8111FCCF70 -:101360006AE070E080E090E00F94C7B70F94364BCE -:101370008111FCCF82E090E09093180280931702D5 -:101380008C2FDF91CF91FF90EF90DF90CF90BF90A7 -:101390000895809101018460809301019FB7F894C2 -:1013A000809102018460809302019FBF68EE73E028 -:1013B00080E090E00F94C7B79FB7F8948091020146 -:1013C0008B7F809302019FBFE091460AF0E0EE0F11 -:1013D000FF1FE35CF94B859194910E94DC4A88EEF3 -:1013E00093E00E94AD60FBCFCF93DF9300D01F92BC -:1013F000CDB7DEB70F94354810927C1910927B1947 -:1014000010927A191092791920E030E048E452E401 -:101410006091731970917419809175199091761972 -:101420000F9472C21816DCF020E030E048E452E479 -:1014300060915D1970915E1980915F1990916019AA -:101440000F9472C218165CF00F94AD4781E0E1DC96 -:101450000F900F900F900F90DF91CF910895E09132 -:10146000460AF0E0EE0FFF1FEF51FA4B8591949181 -:101470000E94DC4A44E060E080E09AE10E94524031 -:1014800062E080E09AE10F9458BA809173199091CC -:101490007419A0917519B091761989839A83AB83D9 -:1014A000BC83CE0101960F941D5BBC0180E09AE1E4 -:1014B0000F9457BA69E578E080E09AE10F9457BA43 -:1014C00062EB75E080E09AE10F9457BA44E069E07E -:1014D00080E09AE10E94524060E080E09AE10F943F -:1014E00058BA80915D1990915E19A0915F19B091E1 -:1014F000601989839A83AB83BC83CE0101960F94D4 -:101500001D5BBC0180E09AE10F9457BA69E578E071 -:1015100080E09AE10F9457BA62EB75E080E09AE1BF -:101520000F9457BA0F943F3B88EE93E00E94AD6052 -:101530000E94D66869CF2F923F924F925F926F922E -:101540007F928F929F92AF92BF92CF92DF92EF9253 -:10155000FF920F931F93CF93DF93CDB7DEB72897FA -:101560000FB6F894DEBF0FBECDBF3EDF0F945948D3 -:1015700040E060E080E09AE10E945240EBE7F6E450 -:10158000859194910F94FF5B81E00E94895460EDF6 -:1015900077E080E090E00F94C7B782E090E090930E -:1015A00018028093170200ED17E021E043E050E0BD -:1015B00060E070E08FEF9FEF0F94896C2C01109228 -:1015C000E1091092E0090F94112A61E088E090E0AF -:1015D0000F94EC2460ED77E080E090E00F94C7B7C3 -:1015E0000F94112A8091220A9091230A892B09F0E5 -:1015F0005CC060E070E0AB0186E090E00F948D602D -:1016000008E813E121E043E050E0B2018CE090E013 -:101610000F94896CF12C1092691A61E089EB9DE5B9 -:101620000E94BCC50F9459480F9498B76C597F4FCE -:101630008F4F9F4F6093EE197093EF198093F019BD -:101640009093F119FF2019F0E5E8F6E407C0E09166 -:10165000460AF0E0EE0FFF1FE556F94B8591949195 -:101660000F94DC4980E00E94895481E090E09093DF -:101670001802809317028F2D28960FB6F894DEBFBC -:101680000FBECDBFDF91CF911F910F91FF90EF90D3 -:10169000DF90CF90BF90AF909F908F907F906F9092 -:1016A0005F904F903F902F90089500ED17E021E05C -:1016B00043E050E0B20180E090E00F94896C2C018F -:1016C00086E990E09093E1098093E00915E088EEC7 -:1016D00093E00E94AD6043E062E180E09AE10E9405 -:1016E000524064EF77E080E09AE10F9457BA88EEB9 -:1016F00093E00E94AD6043E062E180E09AE10E94E5 -:1017000052406FED77E080E09AE10F9457BA1150A4 -:10171000F1F61092E1091092E0090F94112A81E08C -:101720000E94CF608091240A9091250A009741F091 -:10173000829754F086E0682E712CFF24F39408C041 -:1017400007E0602E712C03C01AE0612E712CF12C81 -:10175000E7EAFDE584918F01882339F00F94AD43CA -:101760000F5F1F4FF8018491F7CF6091240A7091A9 -:10177000250A4AE050E084E998E00E942845F110EB -:1017800005C060E070E0AB01C30138CF00ED17E0A9 -:1017900021E043E050E0B20181E090E00F94896CD9 -:1017A00008EE13E021E043E050E0BC0183E090E06C -:1017B0000F94896C2C0180E00F94886E882309F4C3 -:1017C0001FCF00ED17E021E043E050E0B20184E0DC -:1017D00090E00F94896C2C0180E00F94F0618823D5 -:1017E00009F40ECF00E010E021E043E050E0B20148 -:1017F00084E090E00F94896C0CED15E021E043E06B -:1018000050E0BC0185E090E00F94896C2C0181E0F0 -:101810000F94F061882309F4F3CE00E010E021E09A -:1018200043E050E0B20185E090E00F94896C1C0128 -:101830000F948E3780E00F94AB1520E030E040E647 -:1018400051E46091F6097091F7098091F80990913F -:10185000F9090F9496BF2B013C016093F609709330 -:10186000F7098093F8099093F90920E030E040E40B -:1018700051E46091FA097091FB098091FC09909103 -:10188000FD090F9496BF69837A838B839C83609351 -:10189000FA097093FB098093FC099093FD0920E0FD -:1018A00030E040E251E46091FE097091FF098091BF -:1018B000000A9091010A0F9496BF6093FE097093FD -:1018C000FF098093000A9093010A22EE39E03F93CA -:1018D0002F93812C912CA4E3AA2EA2E4BA2EB2E07D -:1018E000CB2EBAE0DB2E7B018C0129813A814B8122 -:1018F0005C81C301B2010F941A070F94901D0CED87 -:1019000015E021E043E050E0B10186E090E00F9463 -:10191000896C2C010F900F90612C712C212C312C93 -:1019200018861F821E821D82198220E030E040E866 -:101930005FE36091FE097091FF098091000A909128 -:10194000010A0F9495BF7B018C016093FE0970938F -:10195000FF098093000A9093010A2091FA093091BF -:10196000FB094091FC095091FD096091F6097091C5 -:10197000F7098091F8099091F909A2EEB9E0BF93B7 -:10198000AF93812C912CE4E3AE2EE2E4BE2EF2E084 -:10199000CF2EFAE0DF2E0F941A070F94901D0F90B0 -:1019A0000F901C9B0EC033B034FA332430F83982C8 -:1019B0008091DE18F1E08F27282E312CFF24F3943C -:1019C00001C0F12C0F948E3786E06816710424F460 -:1019D0009FEF691A790A0FC000E010E020E043E0B1 -:1019E00050E06D817E8186E090E00F94896C9E834B -:1019F0008D83612C712C0F94112A81E00E94CF609D -:101A0000AF81B885A83EB10531F01196B887AF8394 -:101A1000FF2009F48ACFB981B11116C02A94232876 -:101A200019F04BE358E002C046E158E08F819885F9 -:101A300068E278E0873E91051CF085E090E002C006 -:101A400084E090E00F948D608FE59FE00F94EDCCE3 -:101A5000813051F061E084EC9DE50E94BCC561E0FD -:101A60008DEB9DE50E94BCC59981992309F4C8CDF1 -:101A700000ED17E021E043E050E0B20187E090E0A4 -:101A80000F94896C2C0181E00F94886EF82E8823C6 -:101A900009F4B6CD21E043E050E0B20188E090E0E7 -:101AA0000F94896C21E043E050E0BC0189E090E0B4 -:101AB0000F94896C2C010E941A4D8091C7118823C4 -:101AC00039F060E070E0AB018BE090E00F948D6046 -:101AD0008091C711811194CD00ED17E021E043E022 -:101AE00050E0B2018AE090E00F94896C08E813E1BD -:101AF00021E043E050E0BC018BE090E00F94896C62 -:101B00008ACD0F9340E061E084E39DE56FDB88239D -:101B100041F061E080E39DE50E94BCC50F94B142B5 -:101B200009C001E021E040E050E0BA0188E491E022 -:101B30000F947B3D81E06DD982E08093D4020F91B8 -:101B40000895CF93DF93E091460AF0E0EE0FFF1F78 -:101B5000EB5AF84B8591949141E060E047DB882394 -:101B600039F088E090E09093861A8093851A26C019 -:101B7000E091460AF0E0EE0FFF1FEF5AF84B859117 -:101B800094910E94DC4AC4E1D0E084E690E00E9497 -:101B9000AD600F94364B882379F00F94364B81114A -:101BA000FCCF6AE070E080E090E00F94C7B70F943C -:101BB000364B8111FCCF02C0219739F70F94B14207 -:101BC00081E0DF91CF9125C98F929F92AF92BF9212 -:101BD000CF92DF92EF92FF920F931F93CF93DF93F9 -:101BE0000F94594840E060E080E09AE10E94524042 -:101BF00062E676E080E09AE10F9457BA0CE412E0D6 -:101C000067EAE62E6FE0F62EC0E0D0E04C2F61E0F0 -:101C100080E09AE10E9452406CE578E080E09AE131 -:101C20000F9457BA4AE050E0BE0180E09AE10F9469 -:101C3000FEBA65EC75E080E09AE10F9457BAB801FE -:101C4000C7010F94A848F801608171810E5F1F4F92 -:101C5000605371094AE050E080E09AE10F94FEBAC7 -:101C6000219682E0E80EF11CC430D10579F600918E -:101C7000A81A112707FD1095C0E0D0E00F94112A93 -:101C800081E00E94CF602091A81A332727FD30956C -:101C9000C801821B930B97FF03C091958195910911 -:101CA00003970CF45BC0201731070CF4219702173F -:101CB00013070CF42196C430D1053CF4CF3F9FEFBD -:101CC000D90729F4C0E0D0E002C0C3E0D0E040E092 -:101CD00060E080E09AE10E94524062ED77E080E0AF -:101CE0009AE10F9457BA41E060E080E09AE10E94E7 -:101CF000524062ED77E080E09AE10F9457BA42E0FB -:101D000060E080E09AE10E94524062ED77E080E07E -:101D10009AE10F9457BA43E060E080E09AE10E94B4 -:101D2000524062ED77E080E09AE10F9457BA4C2F71 -:101D300060E080E09AE10E94524062E676E080E056 -:101D40009AE10F9457BA0091A81A112707FD109530 -:101D500064E670E080E090E00F94C7B70F94364BD4 -:101D6000882309F48BCF0F94364B8111FCCF6AE0A6 -:101D700070E080E090E00F94C7B70F94364B81116C -:101D8000FCCF0F9459486E01CC0CDD1CF601E45BCE -:101D9000FD4F5F017F010F94112A81E00E94CF6007 -:101DA00041E061E080E09AE10E9452406CE578E019 -:101DB00080E09AE10F9457BA4AE050E0BE0180E01B -:101DC0009AE10F94FEBA65EC75E080E09AE10F9419 -:101DD00057BA41E06DE080E09AE10E945240F5017F -:101DE00060817181605371094AE050E080E09AE1BE -:101DF0000F94FEBA8091A81A992787FD90959801B3 -:101E0000281B390B37FF03C0319521953109233049 -:101E100031050CF443C080179107E4F4F701808189 -:101E2000918101979183808341E06DE080E09AE1A8 -:101E30000E945240F70160817181605371094AE04C -:101E400050E080E09AE10F94FEBA0091A81A1127A1 -:101E500007FD10958091A81A992787FD909508177E -:101E60001907E4F4F70180819181019691838083C1 -:101E700041E06DE080E09AE10E945240F70160810C -:101E80007181605371094AE050E080E09AE10F945B -:101E9000FEBA0091A81A112707FD109564E670E0BC -:101EA00080E090E00F94C7B70F94364B882309F475 -:101EB00072CF0F94364B8111FCCF6AE070E080E066 -:101EC00090E00F94C7B70F94364B8111FCCFB60149 -:101ED000645B7D4FC6018955904F0F94974840E051 -:101EE00061E08DE898E582D9882309F456C081E045 -:101EF0000F9409870F9459480091A81A112707FDDC -:101F000010954C2F60E080E09AE10E94524062E61A -:101F100076E080E09AE10F9457BA3CE4C32E32E0B9 -:101F2000D32E47EAA42E4FE0B42EE12CF12C4E2DF7 -:101F300061E080E09AE10E9452406CE578E080E048 -:101F40009AE10F9457BA4AE050E0B70180E09AE175 -:101F50000F94FEBA65EC75E080E09AE10F9457BAF1 -:101F6000B601C5010F94A848F60160817181F2E0C5 -:101F7000CF0ED11C605371094AE050E080E09AE135 -:101F80000F94FEBA8FEFE81AF80A92E0A90EB11C7E -:101F9000E4E0EE16F10459F671CEDF91CF911F9176 -:101FA0000F91FF90EF90DF90CF90BF90AF909F90F8 -:101FB0008F9008952F923F924F925F926F927F92EF -:101FC0008F929F92AF92BF92CF92DF92EF92FF9249 -:101FD0000F931F93CF93DF93CDB7DEB7A4970FB6C0 -:101FE000F894DEBF0FBECDBF89E09FE00F94EDCC2B -:101FF00088A38091871A882331F01092871A80E88D -:102000009AE00E94E4BD8091D402811104C08091C5 -:10201000FF1982FFC8C380E89AE00E9475BD1C01C9 -:102020008091F9199091FA19A091FB19B091FC19BE -:1020300081309048A105B10540F01092F919109235 -:10204000FA191092FB191092FC198091F9199091CC -:10205000FA19A091FB19B091FC19B695A79597951F -:1020600087954091FE1950E060E070E08417950775 -:10207000A607B70710F48093FE194090FE198091CF -:10208000FF1982FB882780F98F8F512CC10101979E -:102090009BA38AA3411036C08091D4028823E1F02B -:1020A000E091460AF0E0EE0FFF1FE753F84B659111 -:1020B00074918091F9199091FA19A091FB19B0913E -:1020C000FC1923E00297A105B10510F443E001C01B -:1020D00040E2852D0F94DC3B9F8D992399F08091F0 -:1020E000F9199091FA19A091FB19B091FC19029776 -:1020F000A105B10538F40F946C3D86EA91E00F9488 -:10210000273E51C364E87AE08AEF9AE00E94B4A8BF -:102110008091840A8F3231F1E1E04E1611F022E015 -:1021200022C08091D4028823C9F08091F91990913E -:10213000FA19A091FB19B091FC19B695A79597953E -:10214000879520E20197A105B10511F44EE301C086 -:1021500040E26DE17DE5852D0F94DC3BFF8DF111B3 -:1021600009C0DDCF21E000E010E0C42CD12CE12C2F -:10217000F12C39C08091F9199091FA19A091FB19AD -:10218000B091FC19B695A795979587950197A105EC -:10219000B10529F60F946C3D0F94723D04C32411D0 -:1021A0004AC28091811A882311F18AA19BA1801BC8 -:1021B000910B28A1223001F540E050E0BC0180E8FD -:1021C0009AE00E940FBA9091D20A8091D40299238A -:1021D00009F4C5C0811116C08F8D811189C021E01D -:1021E000240D0F5F1F4F02151305C9F626C288A1E3 -:1021F0008D7FD9F2B80101C0BC0180E89AE00E944D -:10220000C8BDE1CFE091460AF0E0EE0FFF1FE152BA -:10221000F74B859194918091F9199091FA19A091B9 -:10222000FB19B091FC19B695A79597958795452D03 -:1022300060E08C159D05AE05BF0569F580E09AE16B -:102240000E9452406EE380E09AE10F9458BA65E034 -:1022500080E09AE10F9458BA80919D0A882329F072 -:102260001092AF0A8DE99AE002C084E89AE05C011E -:1022700052E1952EF50161915F01662311F09110F5 -:102280002BC2992009F4A8CF60E280E09AE10F9474 -:1022900058BA9A94F6CF80E09AE10E94524060E2E8 -:1022A00080E09AE10F9458BA65E080E09AE10F94DB -:1022B00058BA80919D0A882329F01092AF0A8DE9BF -:1022C0009AE002C084E89AE05C0142E1942EF501B4 -:1022D00061915F01662311F0911004C2992009F405 -:1022E0007BCF60E280E09AE10F9458BA9A94F6CFDF -:1022F0008091F9199091FA19A091FB19B091FC19EC -:10230000B695A795979587958C159D05AE05BF0544 -:1023100009F065CF0F946C3D80E89AE00E941BB8ED -:10232000F9E08F9F80011124095F154F64E87AE07E -:10233000C8010F944AC9B80184E998E00E94334566 -:1023400064E87AE080E89AE00E9406C31092F919E6 -:102350001092FA191092FB191092FC1924C28111E3 -:1023600004C02F8D2111A9C03ACFE091460AF0E0B8 -:10237000EE0FFF1FE152F74B859194918091F9196F -:102380009091FA19A091FB19B091FC19B695A795F7 -:10239000979587958C159D05AE05BF0509F063C01F -:1023A0002091A81A29A3B12C4B2D60E080E09AE17E -:1023B0000E94524060E280E09AE10F9458BAB394D0 -:1023C00084E0B812F1CF452D60E080E09AE10E94F0 -:1023D00052406EE380E09AE10F9458BAEDE96E2E18 -:1023E000EAE07E2E812C912CAA24A394B12CF30137 -:1023F00021913F01222361F1452D6A2D80E09AE170 -:102400002CA30E9452402CA1622F80E09AE10F94ED -:1024100058BA9FEFA91AB90AE4E1AE16B10439F728 -:10242000FFEF8F1A9F0AC4018356954F3C01FCE2CF -:10243000AF2EBB24B3940F94112A8091FF1982FD13 -:1024400057C18091A81A29A1281709F454C150C175 -:1024500064E1B62EBA1860E280E09AE10F9458BAAF -:10246000BA94C9F77ECF452D60E080E09AE10E94E2 -:10247000524060E280E09AE10F9458BA80919D0A40 -:10248000882329F01092B00A8DE99AE002C084E80E -:102490009AE05C0153E1952EF50161915F0166239D -:1024A00011F091103EC1992009F45BCF60E280E009 -:1024B0009AE10F9458BA9A94F6CF8091F9199091B5 -:1024C000FA19A091FB19B091FC19B695A7959795AB -:1024D00087958C159D05AE05BF0509F080CE0F943C -:1024E0006C3D1092390A84E89AE09F938F9386E1BD -:1024F0009DE59F938F938E010F5F1F4F1F930F9347 -:102500000F94C1CA0F900F900F900F900F900F90E3 -:102510007E01F5E0EF0EF11CF7018081882349F080 -:10252000992787FD90950F9480C8F70181937F01CB -:10253000F3CF24E8C22E2AE0D22E35E9E32E3FE085 -:10254000F32EF60161916F01C7010F941DCDFFEFCE -:10255000EF1AFF0A2DE9E2162FE0F20691F780E864 -:102560009AE00E941BB8782E682F8AE59FE00F94AE -:102570001DCD97E0A92E9AE0B92E6501E12CF12C32 -:102580008C2D8A198715B8F44701E8E08E0E911C4E -:10259000F601EE0DFF1D6081C701865F904F0F941D -:1025A0001DCD8FEFE81AF80AE814F90489F79FEFB8 -:1025B000C91AD90AE5CF21E041E064E87AE080E871 -:1025C0009AE00E945BBA80E89AE00E9480B861318C -:1025D000F7E27F078105910590F0AB01BC01405106 -:1025E0005742610971094093900D5093910D60938A -:1025F000920D7093930D8BED9CE00E941CABB12C5F -:10260000AA24A394C090900DD090910DE090920DCB -:10261000F090930D4091880D5091890D60918A0D35 -:1026200070918B0DC416D506E606F70608F07FC03C -:10263000B1107DC0B0C02F5FD4CD8091F9199091B9 -:10264000FA19A091FB19B091FC19B695A795979529 -:102650008795422F50E060E070E084179507A60749 -:10266000B70788F0822F90E0880F991F0197AA275B -:1026700097FDA095BA2F8093F9199093FA19A0931A -:10268000FB19B093FC198091F9199091FA19A09156 -:10269000FB19B091FC19B695A79597958795209150 -:1026A000FE1930E02D5F3F4F482F50E024173507CB -:1026B00064F42DEF280F2093FE1921E02093D4021B -:1026C000ECEF4E2E480E55245A945394439423E035 -:1026D000251508F0DFCC67C080E09AE10F9458BA66 -:1026E0009A94C8CD80E09AE10F9458BA9A94EFCDAD -:1026F0001092AF0A73CEF1E08F16910431F463E0CB -:1027000070E080E090E00F94C7B761E070E080E097 -:1027100090E00F94C7B781E0A81AB10809F08BCEFA -:1027200063CE80E09AE10F9458BA9A94B5CE80E8CF -:102730009AE00E94F1C3E091460AF0E0EE0FFF1F1D -:10274000ED58FA4B6591749144E150E084E59AE1CB -:102750000F94D2C8B11013C0E091460AF0E0EE0F1A -:10276000FF1FEB59F74B8591949140E060E00F9487 -:10277000F688F82E81E00F940987FF2049F060E089 -:10278000C8010E94BCC561E082E19DE50E94BCC514 -:102790000F94B14208C0A092820A0E9428C70E94EA -:1027A000FC4DB82E2FCFA4960FB6F894DEBF0FBE07 -:1027B000CDBFDF91CF911F910F91FF90EF90DF90F0 -:1027C000CF90BF90AF909F908F907F906F905F90D1 -:1027D0004F903F902F900895EF92FF920F931F9389 -:1027E000CF93DF93F82EE92E0E94DC4AEC0111E032 -:1027F000009709F410E00F94F54724E030E030939F -:1028000018022093170211110BC043E063E180E02E -:102810009AE10E94524062E080E09AE10F9458BA37 -:1028200004E682E390E00E94AD600F94364B88236B -:1028300021F10F94364B8111FCCF6AE070E080E00B -:1028400090E00F94C7B70F94364B8111FCCF2097BF -:1028500079F582E090E090931802809317020F942C -:102860003F3B81E00F94098782E0DF91CF911F9178 -:102870000F91FF90EF900D943C84015091F611233D -:1028800021F2209711F4CF2DDE2DCE010E94DC4ADB -:10289000EC01009709F0B7CF43E063E180E09AE1F3 -:1028A0000E94524062E080E09AE10F9458BAABCFA8 -:1028B000112309F4AACFE9CFE091460AF0E0EE0F28 -:1028C000FF1FE754F74B8591949186CF0F9361E0FA -:1028D0008091881A811160E06093881A8FEF9FE0E1 -:1028E0000F94FFCC8091DF02882371F08091881AC9 -:1028F000882351F0E091460AF0E0EE0FFF1FEB5401 -:10290000F74B8591949168DF0F94901D88EE93E0CA -:102910000F94873AF89481E09091881A911101C040 -:1029200080E08093D7190F94663878940F94381FFD -:102930008091820A81110AC08091750A811106C0B6 -:102940008091851A9091861A089749F401E021E058 -:1029500048E050E060E070E088E391E008C001E00A -:1029600021E047E050E060E070E088E491E00F94FF -:102970007B3D0F910895E091460AF0E0EE0FFF1FB6 -:10298000E55AF64B8591949127CFE091460AF0E005 -:10299000EE0FFF1FE55DF74B859194911DCF0F93CF -:1029A00081E09091E002911180E08093E00281113A -:1029B00008C00E9477CC80910602882341F0DBDFBB -:1029C00006C00E9458CC8091C7118111DEDF809132 -:1029D000820A81110AC08091750A811106C0809116 -:1029E000851A9091861A089749F401E021E047E0A2 -:1029F00050E060E070E088E391E008C001E021E091 -:102A000047E050E060E070E088E491E00F947B3DA7 -:102A10000F9108956F927F928F929F92AF92BF9283 -:102A2000CF92DF92EF92FF920F931F93CF93DF939A -:102A300041E068E87AE18FEF9FE00F94F0488091E1 -:102A4000F9199091FA19A091FB19B091FC198130F4 -:102A50009048A105B10540F01092F9191092FA19A9 -:102A60001092FB191092FC198091F9199091FA19A2 -:102A7000A091FB19B091FC19B695A79597958795EC -:102A80004091FE1950E060E070E084179507A607BA -:102A9000B70710F48093FE190091FE19B090FF194A -:102AA000B2FABB24B0F810E0E9E46E2EE9E47E2E21 -:102AB000F5EC8F2EF8E49F2EA3E1CA2ED12CE12C49 -:102AC000F12CAA24A3948091F9199091FA19A0915C -:102AD000FB19B091FC1901113CC02091D4022223B2 -:102AE000A1F0E091460AF0E0EE0FFF1FE753F84B2C -:102AF0006591749123E00297A105B10510F443E0BC -:102B000001C040E2812F0F94DC3BBB2009F4F3C1EC -:102B10008091F9199091FA19A091FB19B091FC19C3 -:102B20000297A105B10508F0E6C10F946C3D86EA55 -:102B300091E0DF91CF911F910F91FF90EF90DF9087 -:102B4000CF90BF90AF909F908F907F906F900D949B -:102B5000273E013009F04CC02091D402222311F10C -:102B6000E091460AF0E0EE0FFF1FEF5BF94BC591D5 -:102B7000D491B695A795979587950197A105B1052D -:102B800039F488E592E00F94C2509C014EE306C0F0 -:102B900088E592E00F94C2509C0140E2BE01812F73 -:102BA0000F94133CBB2009F4A6C18091F9199091B0 -:102BB000FA19A091FB19B091FC19B695A7959795B4 -:102BC00087950197A105B10509F095C10F946C3D5A -:102BD000E091460AF0E0EE0FFF1FEF5BF94B8591A5 -:102BE000949127EE33E04AE050E068E572E04EC091 -:102BF000023009F05BC02091D402222311F1E09150 -:102C0000460AF0E0EE0FFF1FEF57F84BC591D49145 -:102C1000B695A795979587950297A105B10539F4C3 -:102C20008BE799E10F94C2509C014EE306C08BE7FD -:102C300099E10F94C2509C0140E2BE01812F0F9494 -:102C4000133CBB2009F457C18091F9199091FA19EE -:102C5000A091FB19B091FC19B695A795979587950A -:102C60000297A105B10509F046C10F946C3DE091B2 -:102C7000460AF0E0EE0FFF1FEF57F84B8591949155 -:102C800027E231E040E050E06BE779E1DF91CF915E -:102C90001F910F91FF90EF90DF90CF90BF90AF907A -:102CA0009F908F907F906F900D94C43D033009F0FA -:102CB00041C02091D4022223E1F0F301C591D491C7 -:102CC000B695A795979587950397A105B10539F412 -:102CD00089E799E10F94C2509C014EE306C089E751 -:102CE00099E10F94C2509C0140E2BE01812F0F94E4 -:102CF000133CBB2009F4FFC08091F9199091FA1997 -:102D0000A091FB19B091FC19B695A7959795879559 -:102D10000397A105B10509F0EEC00F946C3DE9E4FD -:102D2000F9E48591949123E730E040E050E069E7D1 -:102D300079E1ACCF043009F04CC02091D4022223B9 -:102D400011F1E091460AF0E0EE0FFF1FE758F74B54 -:102D5000C591D491B695A795979587950497A105A8 -:102D6000B10539F480EE99E00F94C2509C014EE316 -:102D700006C080EE99E00F94C2509C0140E2BE0173 -:102D8000812F0F94133CBB2009F4B5C08091F91931 -:102D90009091FA19A091FB19B091FC19B695A795DD -:102DA000979587950497A105B10509F0A4C00F94E4 -:102DB0006C3DE091460AF0E0EE0FFF1FE758F74B3D -:102DC000859194912FEF30E040E050E060EE79E0A3 -:102DD0005DCF053009F04CC02091D402222311F1BF -:102DE000E091460AF0E0EE0FFF1FE35BF74BC59161 -:102DF000D491B695A795979587950597A105B105A7 -:102E000039F486E592E00F94C2509C014EE306C06F -:102E100086E592E00F94C2509C0140E2BE01812FF2 -:102E20000F94133CBB2009F466C08091F91990916E -:102E3000FA19A091FB19B091FC19B695A795979531 -:102E400087950597A105B10509F055C00F946C3D14 -:102E5000E091460AF0E0EE0FFF1FE35BF74B859130 -:102E6000949127EE33E04AE050E066E572E00ECF41 -:102E7000063009F040C02091D4022223C1F0E09135 -:102E8000460AF0E0EE0FFF1FEB58F74B6591749187 -:102E9000B695A7959795879520E20697A105B10568 -:102EA00011F44EE301C040E2812F0F94DC3BBB20C4 -:102EB00011F18091F9199091FA19A091FB19B09133 -:102EC000FC19B695A795979587950697A105B10525 -:102ED00091F40F946C3DDF91CF911F910F91FF9072 -:102EE000EF90DF90CF90BF90AF909F908F907F90AA -:102EF0006F900D94BF492091E0028091F919909153 -:102F0000FA19A091FB19B091FC1921110FC00730DB -:102F100009F04EC02091D402222329F1E091460A03 -:102F2000F0E0EE0FFF1FE15CF74B0EC0073009F039 -:102F30003FC02091D4022223B1F0E091460AF0E094 -:102F4000EE0FFF1FE55CF74B65917491B695A79561 -:102F50009795879520E20797A105B10539F140E2E1 -:102F6000812F0F94DC3BBB2019F18091F9199091CE -:102F7000FA19A091FB19B091FC19B695A7959795F0 -:102F800087950797A105B10599F40F946C3DDF91E2 -:102F9000CF911F910F91FF90EF90DF90CF90BF9056 -:102FA000AF909F908F907F906F90F9CC4EE3D8CFE9 -:102FB0002091881A8091F9199091FA19A091FB1922 -:102FC000B091FC1921110FC0083009F04EC02091BA -:102FD000D402222329F1E091460AF0E0EE0FFF1F10 -:102FE000E15AF94B0EC0083009F03FC02091D402DD -:102FF0002223B1F0E091460AF0E0EE0FFF1FE55A00 -:10300000F94B65917491B695A7959795879520E2B0 -:103010000897A105B10539F140E2812F0F94DC3BFF -:10302000BB2019F18091F9199091FA19A091FB191F -:10303000B091FC19B695A795979587950897A10526 -:10304000B10599F40F946C3DDF91CF911F910F91D1 -:10305000FF90EF90DF90CF90BF90AF909F908F90B8 -:103060007F906F9033CC4EE3D8CF2091881A809117 -:10307000F9199091FA19A091FB19B091FC1921113D -:1030800058C02091DF0221110FC0093009F08CC017 -:103090002091D402222329F1E091460AF0E0EE0FBC -:1030A000FF1FEF53F74B0EC0093009F07DC0209190 -:1030B000D4022223B1F0E091460AF0E0EE0FFF1FA8 -:1030C000E354F74B65917491B695A79597958795BD -:1030D00020E20997A105B10551F140E2812F0F943B -:1030E000DC3BBB2009F460C08091F9199091FA197A -:1030F000A091FB19B091FC19B695A7959795879566 -:103100000997A105B10509F04FC00F946C3DDF91FF -:10311000CF911F910F91FF90EF90DF90CF90BF90D4 -:10312000AF909F908F907F906F900D947C434EE373 -:10313000D5CF0930C9F52091D402222391F0F401B2 -:1031400065917491B695A7959795879520E2099713 -:10315000A105B10511F44EE301C040E2812F0F94A7 -:10316000DC3BBB2009F18091F9199091FA19A091EB -:10317000FB19B091FC19B695A79597958795099776 -:10318000A105B10589F40F946C3DDF91CF911F919A -:103190000F91FF90EF90DF90CF90BF90AF909F90F6 -:1031A0008F907F906F9088CB8091F9199091FA1948 -:1031B000A091FB19B091FC194497A105B10540F00D -:1031C000C092F919D092FA19E092FB19F092FC1909 -:1031D0004091F9195091FA196091FB197091FC19FD -:1031E00076956795579547958091FE1990E00396DF -:1031F000242F30E0821793074CF48DEF840F8093D7 -:10320000FE19A092D4020CEF040F1FEF1F5F0F5F97 -:10321000143008F458CCDF91CF911F910F91FF909B -:10322000EF90DF90CF90BF90AF909F908F907F9066 -:103230006F9008954F925F926F927F928F929F92BC -:10324000AF92BF92CF92DF92EF92FF920F931F93B4 -:10325000CF93DF931F92CDB7DEB741E068E87AE104 -:103260008FEF9FE00F94F0488091F9199091FA192F -:10327000A091FB19B091FC1981309048A105B105CE -:1032800040F01092F9191092FA191092FB1910924D -:10329000FC198091F9199091FA19A091FB19B0913C -:1032A000FC19B695A795979587954091FE1950E022 -:1032B00060E070E084179507A607B70710F48093C5 -:1032C000FE19A090FE199090FF1992FA992490F897 -:1032D000B12C05EC18E4B3E0EB2EB6E4FB2E81E054 -:1032E000C82E86E4D82EA11037C08091D40288233E -:1032F000E1F0E091460AF0E0EE0FFF1FE753F84BD4 -:10330000659174918091F9199091FA19A091FB1926 -:10331000B091FC1923E00297A105B10510F443E038 -:1033200001C040E28B2D0F94DC3B992009F452C080 -:103330008091F9199091FA19A091FB19B091FC199B -:103340000297A105B10508F045C00F946C3D86EACF -:1033500091E00F94273EE2C681E0A8123BC0809125 -:10336000D402882301F1E091460AF0E0EE0FFF1F3E -:10337000EB5EF94B659174918091F9199091FA196E -:10338000A091FB19B091FC19B695A79597958795D3 -:103390002EE70197A105B10511F44EE301C040E20B -:1033A0008B2D0F94DC3B9920A9F08091F919909115 -:1033B000FA19A091FB19B091FC19B695A7959795AC -:1033C00087950197A105B10529F40F946C3D8EE80E -:1033D00091E00FC68091740A811141C022E0A216CB -:1033E00019F033E0832E3DC08091D402882301F18F -:1033F000E091460AF0E0EE0FFF1FE955F84B6591AA -:1034000074918091F9199091FA19A091FB19B091DA -:10341000FC19B695A795979587952EE70297A10574 -:10342000B10511F44EE301C040E28B2D0F94DC3B5B -:103430009920B9F28091F9199091FA19A091FB198C -:10344000B091FC19B695A795979587950297A10518 -:10345000B10539F60F946C3D88EC91E0CAC562E085 -:10346000862E8091821A81114BC08A1048C08091AB -:10347000D402882329F1E091460AF0E0EE0FFF1F05 -:10348000E755F74B659174918091F9199091FA196C -:10349000A091FB19B091FC19B695A79597958795C2 -:1034A000482C512C612C712C20E284159505A60521 -:1034B000B70511F44EE301C040E28B2D0F94DC3BC5 -:1034C0009920E9F08091F9199091FA19A091FB19CE -:1034D000B091FC19B695A79597958795482D50E022 -:1034E00060E070E084179507A607B70741F40F94D2 -:1034F0006C3D61E085E69DE50E94BCC50FC68394E6 -:103500008091E002811126C18091C711882309F4BE -:1035100092C08A1044C08091D402882329F1E0919E -:10352000460AF0E0EE0FFF1FED5BF74B65917491DB -:103530008091F9199091FA19A091FB19B091FC1999 -:10354000B695A79597958795482C512C612C712C91 -:1035500020E284159505A605B70511F44EE301C0D8 -:1035600040E28B2D0F94DC3B9920C9F08091F91932 -:103570009091FA19A091FB19B091FC19B695A795F5 -:1035800097958795482D50E060E070E08417950787 -:10359000A607B70721F40F946C3D01DABFC5772465 -:1035A0007394780C7A1076C18091D402882331F11B -:1035B000E091460AF0E0EE0FFF1FE95CF74B6591E2 -:1035C00074918091F9199091FA19A091FB19B09119 -:1035D000FC19B695A79597958795272D30E040E083 -:1035E00050E082179307A407B50719F420E24EE3D1 -:1035F00002C020E240E28B2D0F94DC3B992009F4BD -:1036000049C18091F9199091FA19A091FB19B091D3 -:10361000FC19B695A79597958795472D50E060E0E2 -:1036200070E084179507A607B70709F033C10F9418 -:103630006C3DABD973C58A1041C08091D4028823F8 -:1036400029F1E091460AF0E0EE0FFF1FE15CF74B35 -:10365000659174918091F9199091FA19A091FB19D3 -:10366000B091FC19B695A79597958795482C512C44 -:10367000612C712C20E284159505A605B70511F47F -:103680004EE301C040E28B2D0F94DC3B9920B1F05A -:103690008091F9199091FA19A091FB19B091FC1938 -:1036A000B695A79597958795482D50E060E070E016 -:1036B00084179507A607B70709F46DCF772473948D -:1036C000780C7A10E7C08091D402882331F1E09120 -:1036D000460AF0E0EE0FFF1FE95CF74B659174912D -:1036E0008091F9199091FA19A091FB19B091FC19E8 -:1036F000B695A79597958795272D30E040E050E047 -:1037000082179307A407B50719F420E24EE302C01D -:1037100020E240E28B2D0F94DC3B992009F4BAC0E3 -:103720008091F9199091FA19A091FB19B091FC19A7 -:10373000B695A79597958795472D50E060E070E086 -:1037400084179507A607B70709F0A4C00F946C3D2E -:1037500012D9E4C48A1041C08091D402882329F18F -:10376000E091460AF0E0EE0FFF1FE55CF74B659134 -:1037700074918091F9199091FA19A091FB19B09167 -:10378000FC19B695A79597958795482C512C612CD7 -:10379000712C20E284159505A605B70511F44EE3BA -:1037A00001C040E28B2D0F94DC3B9920B1F0809159 -:1037B000F9199091FA19A091FB19B091FC19B695DD -:1037C000A79597958795482D50E060E070E08417A5 -:1037D0009507A607B70709F4DECE77247394780C13 -:1037E00080910602882371F07A1054C08091D4022F -:1037F000882389F1E091460AF0E0EE0FFF1FE15DBA -:10380000F74B0DC07A1046C08091D402882319F17D -:10381000E091460AF0E0EE0FFF1FED5CF74B65917B -:1038200074918091F9199091FA19A091FB19B091B6 -:10383000FC19B695A79597958795272D30E040E020 -:1038400050E082179307A407B50709F120E240E290 -:103850008B2D0F94DC3B9920E9F08091F919909120 -:10386000FA19A091FB19B091FC19B695A7959795F7 -:103870008795472D50E060E070E084179507A60714 -:10388000B70741F40F946C3D0F945B4247C420E2AC -:103890004EE3DECF8394839480910702882371F0F6 -:1038A0008A1053C08091D402882389F1E091460A9E -:1038B000F0E0EE0FFF1FE358F74B0DC08A1045C034 -:1038C0008091D402882319F1E091460AF0E0EE0FCE -:1038D000FF1FEF57F74B659174918091F919909103 -:1038E000FA19A091FB19B091FC19B695A795979577 -:1038F0008795482C512C612C712C20E2841595055C -:10390000A605B70501F140E28B2D0F94DC3B992011 -:10391000E1F08091F9199091FA19A091FB19B091F9 -:10392000FC19B695A79597958795482D50E060E0CE -:1039300070E084179507A607B70739F40F946C3D1C -:103940000F94113EEBC34EE3DFCF83948091881A2E -:1039500081110EC08A1053C08091D402882389F14E -:10396000E091460AF0E0EE0FFF1FE15AF94B0DC05F -:103970008A1045C08091D402882319F1E091460A4B -:10398000F0E0EE0FFF1FE55AF94B659174918091BD -:10399000F9199091FA19A091FB19B091FC19B695FB -:1039A000A79597958795482C512C612C712C20E276 -:1039B00084159505A605B70501F140E28B2D0F94FE -:1039C000DC3B9920E1F08091F9199091FA19A091CE -:1039D000FB19B091FC19B695A79597958795482D39 -:1039E00050E060E070E084179507A607B70739F448 -:1039F0000F946C3D0F94669491C34EE3DFCF839494 -:103A00008091881A81115BC08091DF0281110EC004 -:103A10008A1096C08091D402882389F1E091460AE9 -:103A2000F0E0EE0FFF1FEF53F74B0DC08A1088C078 -:103A30008091D402882319F1E091460AF0E0EE0F5C -:103A4000FF1FE354F74B659174918091F9199091A0 -:103A5000FA19A091FB19B091FC19B695A795979505 -:103A60008795482C512C612C712C20E284159505EA -:103A7000A605B70511F140E28B2D0F94DC3B992090 -:103A800009F45EC08091F9199091FA19A091FB197F -:103A9000B091FC19B695A79597958795482D50E05C -:103AA00060E070E084179507A607B70709F048C0E3 -:103AB0000F946C3D0F947C4331C34EE3DDCF8A10ED -:103AC0003FC08091D4028823F9F0F8016591749188 -:103AD0008091F9199091FA19A091FB19B091FC19F4 -:103AE000B695A79597958795482C512C612C712CEC -:103AF00020E284159505A605B70511F44EE301C033 -:103B000040E28B2D0F94DC3B9920D1F08091F91984 -:103B10009091FA19A091FB19B091FC19B695A7954F -:103B200097958795482D50E060E070E084179507E1 -:103B3000A607B70729F40F946C3D0F945C94EEC26E -:103B400083948091730A81110EC08A1053C08091B2 -:103B5000D402882389F1E091460AF0E0EE0FFF1FBE -:103B6000E75FF94B0DC08A1045C08091D4028823CD -:103B700019F1E091460AF0E0EE0FFF1FEB5FF94B01 -:103B8000659174918091F9199091FA19A091FB199E -:103B9000B091FC19B695A79597958795482C512C0F -:103BA000612C712C20E284159505A605B70501F15D -:103BB00040E28B2D0F94DC3B9920E1F08091F919C4 -:103BC0009091FA19A091FB19B091FC19B695A7959F -:103BD00097958795482D50E060E070E08417950731 -:103BE000A607B70739F40F946C3D0F94714296C243 -:103BF0004EE3DFCF83948091190981110EC08A10A2 -:103C000053C08091D402882389F1E091460AF0E004 -:103C1000EE0FFF1FED51F94B0DC08A1045C080918A -:103C2000D402882319F1E091460AF0E0EE0FFF1F5D -:103C3000E152F94B659174918091F9199091FA19BB -:103C4000A091FB19B091FC19B695A795979587950A -:103C5000482C512C612C712C20E284159505A60569 -:103C6000B70501F140E28B2D0F94DC3B9920E1F088 -:103C70008091F9199091FA19A091FB19B091FC1952 -:103C8000B695A79597958795482D50E060E070E030 -:103C900084179507A607B70739F40F946C3D0F9466 -:103CA00089423CC24EE3DFCF83948091821A811116 -:103CB0004CC08091740A811148C08A1045C080911F -:103CC000D402882329F1E091460AF0E0EE0FFF1FAD -:103CD000E15BF64B659174918091F9199091FA1915 -:103CE000A091FB19B091FC19B695A795979587956A -:103CF000482C512C612C712C2EE784159505A605B6 -:103D0000B70511F44EE301C040E28B2D0F94DC3B6C -:103D10009920D1F08091F9199091FA19A091FB198D -:103D2000B091FC19B695A79597958795482D50E0C9 -:103D300060E070E084179507A607B70729F40F9491 -:103D40006C3D86ED91E055C183948A1045C0809109 -:103D5000D402882329F1E091460AF0E0EE0FFF1F1C -:103D6000EB50F84B659174918091F9199091FA1983 -:103D7000A091FB19B091FC19B695A79597958795D9 -:103D8000482C512C612C712C2EE784159505A60525 -:103D9000B70511F44EE301C040E28B2D0F94DC3BDC -:103DA0009920D1F08091F9199091FA19A091FB19FD -:103DB000B091FC19B695A79597958795482D50E039 -:103DC00060E070E084179507A607B70729F40F9401 -:103DD0006C3D80EE91E00DC177247394780C809156 -:103DE000B80C882341F07A1048C08091D40288230F -:103DF00029F1F60107C07A1040C08091D4028823CF -:103E0000E9F0F701659174918091F9199091FA198F -:103E1000A091FB19B091FC19B695A7959795879538 -:103E2000272D30E040E050E082179307A407B50744 -:103E300009F120E240E28B2D0F94DC3B9920E9F060 -:103E40008091F9199091FA19A091FB19B091FC1980 -:103E5000B695A79597958795472D50E060E070E05F -:103E600084179507A607B70741F40F946C3D0F948C -:103E7000DD3C54C120E24EE3DECF839483948091F5 -:103E8000811A811172C041E0BE016F5F7F4F89E0EE -:103E90009FE00F94F04829818091F9199091FA19C7 -:103EA000A091FB19B091FC19222319F0213079F06F -:103EB0004BC08A1059C02091D402222349F1E091CD -:103EC000460AF0E0EE0FFF1FEB5BF94B0DC08A10C6 -:103ED0004BC02091D4022223D9F0E091460AF0E0B1 -:103EE000EE0FFF1FE35BF94B65917491B695A795B3 -:103EF00097958795482C512C612C712C20E28415C4 -:103F00009505A605B70571F140E28B2D0F94DC3BBA -:103F1000992051F18091F9199091FA19A091FB190A -:103F2000B091FC19B695A79597958795482D50E0C7 -:103F300060E070E084179507A607B707A9F40F940F -:103F40006C3D0F941249EAC08A100EC02091D40231 -:103F50002223F1F2E091460AF0E0EE0FFF1FE75B4B -:103F6000F94BC2CF4EE3D1CF83948091811A88233D -:103F700009F487C08A1040C08091D4028823F1F0F0 -:103F80008091F9199091FA19A091FB19B091FC193F -:103F9000B695A79597958795482D50E060E070E01D -:103FA0002EE784179507A607B70711F44EE301C063 -:103FB00040E269E57DE58B2D0F94DC3B9920E1F033 -:103FC0008091F9199091FA19A091FB19B091FC19FF -:103FD000B695A79597958795482D50E060E070E0DD -:103FE00084179507A607B70739F40F946C3D8AED3F -:103FF00091E00F94A53F92C077247394780C7A10C7 -:104000003EC08091D4028823F1F08091F9199091FB -:10401000FA19A091FB19B091FC19B695A79597953F -:1040200087954A2D50E060E070E020E28417950704 -:10403000A607B70711F44EE301C040E267E47DE54F -:104040008B2D0F94DC3B9920D1F08091F919909140 -:10405000FA19A091FB19B091FC19B695A7959795FF -:104060008795472D50E060E070E084179507A6071C -:10407000B70729F40F946C3D0F94818D4FC0839442 -:1040800083948091F9199091FA19A091FB19B0913C -:10409000FC19B695A79597958795482D50E060E057 -:1040A00070E084179507A607B70788F0882D90E081 -:1040B000880F991F0197AA2797FDA095BA2F809383 -:1040C000F9199093FA19A093FB19B093FC19409138 -:1040D000F9195091FA196091FB197091FC197695B4 -:1040E0006795579547958091FE1990E00396242F88 -:1040F00030E08217930764F48DEF840F8093FE19EC -:1041000081E08093D4028CEFA82EA40EBB24BA9435 -:10411000B394A39483E08B1508F0E5C80F90DF916A -:10412000CF911F910F91FF90EF90DF90CF90BF90B4 -:10413000AF909F908F907F906F905F904F90089579 -:10414000CF93DF9320E030E04EE353E460917319A6 -:104150007091741980917519909176190F9472C2AB -:1041600018165CF580910602882389F080916B0215 -:10417000882369F0E091460AF0E0EE0FFF1FE15A54 -:10418000F64B85919491DF91CF910D94EC9381E062 -:1041900080933A0A8093390A61E080E099E50E94B1 -:1041A000BCC5C6E6D8E08991882319F00F94AD43C9 -:1041B000FACF8AE00F94AD432CC00F94594840E0E9 -:1041C00060E080E09AE10E945240E091460AF0E00F -:1041D000EE0FFF1FE556F74B859194910F94FF5B0F -:1041E00042E060E080E09AE10E945240E091460A9D -:1041F000F0E0EE0FFF1FED5BF84B859194910F946B -:10420000FF5B60ED77E080E090E00F94C7B70F941C -:104210005948DF91CF910D94B1428F929F92AF9206 -:10422000BF92DF92EF92FF920F931F93CF93DF9392 -:104230001092891A8091F9199091FA19A091FB199D -:10424000B091FC1981309048A105B10540F0109261 -:10425000F9191092FA191092FB191092FC19809119 -:10426000F9199091FA19A091FB19B091FC19B69522 -:10427000A795979587954091FE1950E060E070E012 -:1042800084179507A607B70710F48093FE19D091FD -:10429000FE191091FF1912FB112710F9C0E0DD245F -:1042A000D394D1113FC08091D4028823E1F0E091F2 -:1042B000460AF0E0EE0FFF1FE352FA4B659174914E -:1042C0008091F9199091FA19A091FB19B091FC19FC -:1042D00023E00297A105B10510F443E001C040E2DC -:1042E0008C2F0F94DC3B1123E9F08091F919909108 -:1042F000FA19A091FB19B091FC190297A105B1051B -:1043000088F40F946C3D8EE291E0DF91CF911F9184 -:104310000F91FF90EF90DF90BF90AF909F908F90A4 -:104320000D94273E8091820A81110BC08091750AFD -:10433000811107C08091851A9091861A089709F01B -:1043400057C020E030E040E050E46091FE097091F9 -:10435000FF098091000A9091010A0F946FC087FFB6 -:1043600047C08091740A811143C08091480A81112D -:104370003FC0D13011F002E03CC08091D4028823CC -:1043800001F1E091460AF0E0EE0FFF1FE15BF64B12 -:10439000659174918091F9199091FA19A091FB1986 -:1043A000B091FC19B695A795979587952EE701973B -:1043B000A105B10511F44EE301C040E28C2F0F942A -:1043C000DC3B1123C1F28091F9199091FA19A09167 -:1043D000FB19B091FC19B695A7959795879501970C -:1043E000A105B10541F60F946C3D86ED91E043C007 -:1043F00001E02091DE128091DD12281B2F70809148 -:10440000F9199091FA19A091FB19B091FC19211199 -:1044100010C02091820A21110CC02091750A21112F -:1044200008C02091851A3091861A2830310509F08C -:104430004DC00D1353C02091D402211129C0112366 -:1044400009F44CC08091F9199091FA19A091FB19C7 -:10445000B091FC19B695A79597958795402F50E098 -:1044600060E070E084179507A607B707B9F50F94C9 -:104470006C3D88E391E0DF91CF911F910F91FF9008 -:10448000EF90DF90BF90AF909F908F900D94A53FDD -:10449000E091460AF0E0EE0FFF1FE350FA4B659102 -:1044A0007491B695A79597958795802E912CA12C00 -:1044B000B12C2EE788159905AA05BB0511F44EE32A -:1044C00001C040E28C2F0F94DC3BB9CF0D1306C026 -:1044D0002091D402211148C4111164C40F5F80914E -:1044E000830A4091F9195091FA196091FB19709162 -:1044F000FC19811107C08091851A9091861A08973E -:1045000009F01AC18091DE0C882309F4F0C0809173 -:10451000480A811152C18091740A81114EC1809163 -:10452000820A882309F44CC00D1394C08091D402F0 -:104530008823F1F0E091460AF0E0EE0FFF1FE15909 -:10454000F84B859194917695679557954795802E70 -:10455000912CA12CB12C20E2481559056A057B0548 -:1045600011F44EE301C040E2BC018C2F0F94DC3B00 -:10457000112309F46FC08091F9199091FA19A09153 -:10458000FB19B091FC19B695A79597958795402F83 -:1045900050E060E070E084179507A607B70709F0C0 -:1045A00059C00F946C3DDF91CF911F910F91FF90F7 -:1045B000EF90DF90BF90AF909F908F900D94BD4291 -:1045C0000D1348C08091D4028823F1F0E091460A8F -:1045D000F0E0EE0FFF1FED5EF84B8591949176951C -:1045E000679557954795802E912CA12CB12C20E2F0 -:1045F000481559056A057B0511F44EE301C040E2F8 -:10460000BC018C2F0F94DC3B112321F18091F9190F -:104610009091FA19A091FB19B091FC19B695A79544 -:1046200097958795402F50E060E070E084179507DC -:10463000A607B70779F40F946C3DDF91CF911F91D6 -:104640000F91FF90EF90DF90BF90AF909F908F9071 -:104650000D94ED42FF24F394F00EFD1245C08091BD -:10466000D402882329F1E091460AF0E0EE0FFF1F03 -:10467000E35EF94B659174918091F9199091FA1963 -:10468000A091FB19B091FC19B695A79597958795C0 -:104690008F2C912CA12CB12C2EE788159905AA05F9 -:1046A000BB0511F44EE301C040E28C2F0F94DC3BBC -:1046B0001123D1F08091F9199091FA19A091FB1969 -:1046C000B091FC19B695A795979587954F2D50E019 -:1046D00060E070E084179507A607B70729F40F94E8 -:1046E0006C3D80EC91E0C7CE01E00F0D66C080917B -:1046F000851A9091861A8830910549F42091480ACC -:10470000211105C02091740A222309F456C020917A -:10471000750A211152C0089709F44FC00D134CC0FF -:104720008091D402882351F1E091460AF0E0EE0F27 -:10473000FF1FE152F74B0DC00D133EC08091D40214 -:104740008823E1F0E091460AF0E0EE0FFF1FE35806 -:10475000F84B859194917695679557954795802E5E -:10476000912CA12CB12C2EE7481559056A057B0523 -:1047700009F140E2BC018C2F0F94DC3B1123E1F0E6 -:104780008091F9199091FA19A091FB19B091FC1937 -:10479000B695A79597958795402F50E060E070E01B -:1047A00084179507A607B70739F40F946C3D8EE57B -:1047B00091E061CE4EE3DECF0F5F2091820A8091BF -:1047C000F9199091FA19A091FB19B091FC192111D6 -:1047D0000CC02091750A211108C02091851A3091D2 -:1047E000861A2830310509F03FC02091811A222312 -:1047F00009F485C10D1336C02091D4022223B1F0F3 -:10480000B695A79597958795402F50E060E070E0AA -:104810002EE784179507A607B70711F44EE301C0EA -:1048200040E265E87FE58C2F0F94DC3B1123D1F04B -:104830008091F9199091FA19A091FB19B091FC1986 -:10484000B695A79597958795402F50E060E070E06A -:1048500084179507A607B70729F40F946C3D8AEDD6 -:1048600091E009CE0F5F4BC120910602222391F007 -:1048700020916B02222371F00D1354C02091D402B9 -:10488000222349F1E091460AF0E0EE0FFF1FE95ABA -:10489000F64B0DC00D1346C02091D4022223D9F04F -:1048A000E091460AF0E0EE0FFF1FEB51F84B6591E7 -:1048B0007491B695A79597958795802E912CA12CEC -:1048C000B12C20E288159905AA05BB0549F140E203 -:1048D0008C2F0F94DC3B112329F18091F9199091D1 -:1048E000FA19A091FB19B091FC19B695A795979567 -:1048F0008795402F50E060E070E084179507A60789 -:10490000B70781F40F946C3DDF91CF911F910F9108 -:10491000FF90EF90DF90BF90AF909F908F9010CC62 -:104920004EE3D6CFEE24E394E00EED124FC080911B -:10493000D402882329F1E091460AF0E0EE0FFF1F30 -:10494000ED50FA4B659174918091F9199091FA1993 -:10495000A091FB19B091FC19B695A79597958795ED -:104960008E2C912CA12CB12C20E288159905AA053A -:10497000BB0511F44EE301C040E28C2F0F94DC3BE9 -:10498000112321F18091F9199091FA19A091FB1945 -:10499000B091FC19B695A795979587954E2D50E047 -:1049A00060E070E084179507A607B70779F40F94C5 -:1049B0006C3DDF91CF911F910F91FF90EF90DF90B1 -:1049C000BF90AF909F908F900D943466FF24F39426 -:1049D000FE0CFD1245C08091D402882329F1E0919C -:1049E000460AF0E0EE0FFF1FE159F94B6591749113 -:1049F0008091F9199091FA19A091FB19B091FC19C5 -:104A0000B695A795979587958F2C912CA12CB12CB5 -:104A10002EE788159905AA05BB0511F44EE301C0E0 -:104A200040E28C2F0F94DC3B1123D1F08091F919D7 -:104A30009091FA19A091FB19B091FC19B695A79520 -:104A4000979587954F2D50E060E070E084179507AB -:104A5000A607B70729F40F946C3D88E491E00BCDCD -:104A600002E00E0D8091821A811149C00D1345C0DC -:104A70008091D402882329F1E091460AF0E0EE0FFC -:104A8000FF1FEB54F84B659174918091F919909147 -:104A9000FA19A091FB19B091FC19B695A7959795B5 -:104AA0008795802E912CA12CB12C2EE78815990585 -:104AB000AA05BB0511F44EE301C040E28C2F0F9410 -:104AC000DC3B1123D1F08091F9199091FA19A09152 -:104AD000FB19B091FC19B695A79597958795402F2E -:104AE00050E060E070E084179507A607B70729F447 -:104AF0000F946C3D8CE591E0BECC03E00E0D8091EF -:104B0000750A81114FC08091851A9091861A089775 -:104B100009F448C00D1345C08091D402882329F1BF -:104B2000E091460AF0E0EE0FFF1FE75CF94B65915C -:104B300074918091F9199091FA19A091FB19B09193 -:104B4000FC19B695A79597958795802E912CA12C49 -:104B5000B12C2EE788159905AA05BB0511F44EE383 -:104B600001C040E28C2F0F94DC3B1123D1F08091E7 -:104B7000F9199091FA19A091FB19B091FC19B69509 -:104B8000A79597958795402F50E060E070E08417D7 -:104B90009507A607B70729F40F946C3D80E891E0CC -:104BA0006ACC0F5F0D133EC08091D4028823F1F0D0 -:104BB0008091F9199091FA19A091FB19B091FC1903 -:104BC000B695A79597958795402F50E060E070E0E7 -:104BD0002EE784179507A607B70711F44EE301C027 -:104BE00040E26AE77FE58C2F0F94DC3B1123D1F084 -:104BF0008091F9199091FA19A091FB19B091FC19C3 -:104C0000B695A79597958795402F50E060E070E0A6 -:104C100084179507A607B70729F40F946C3D86EE15 -:104C200091E029CCEE24E394E00EED1245C0809192 -:104C3000D402882329F1E091460AF0E0EE0FFF1F2D -:104C4000E75EF94B659174918091F9199091FA1989 -:104C5000A091FB19B091FC19B695A79597958795EA -:104C60008E2C912CA12CB12C2EE788159905AA0524 -:104C7000BB0511F44EE301C040E28C2F0F94DC3BE6 -:104C80001123D1F08091F9199091FA19A091FB1993 -:104C9000B091FC19B695A795979587954E2D50E044 -:104CA00060E070E084179507A607B70729F40F9412 -:104CB0006C3D80E991E0DFCBA2E0FA2EF00E40914E -:104CC000F9195091FA196091FB197091FC197695B8 -:104CD0006795579547958F2D90E0A0E0B0E0481775 -:104CE00059076A077B0788F08F2D90E0880F991F7E -:104CF0000197AA2797FDA095BA2F8093F919909351 -:104D0000FA19A093FB19B093FC194091F91950912D -:104D1000FA196091FB197091FC1976956795579572 -:104D200047958091FE1990E00396242F30E082177A -:104D300093074CF48DEF840F8093FE19D092D40228 -:104D4000DCEFD40FCFEFCF5FDF5FC43008F4A9CA28 -:104D5000DF91CF911F910F91FF90EF90DF90BF9067 -:104D6000AF909F908F900895E091460AF0E0EE0F8B -:104D7000FF1FE95BF84B65917491B695A7959795E0 -:104D80008795802E912CA12CB12C2EE788159905A2 -:104D9000AA05BB0511F44EE301C040E28C2F0F942D -:104DA000DC3B9ACB8091F9199091FA19A091FB19EB -:104DB000B091FC19B695A79597958795402F50E02F -:104DC00060E070E084179507A607B70709F086CB67 -:104DD0000F946C3D88ED91E04ECBCF93DF93EC01C7 -:104DE000E091460ACF3F8FEFD80731F4F0E0EE0FA5 -:104DF000FF1FE55FF64B4DC0CE3F8FEFD80779F42C -:104E0000F0E0EE0FFF1F662381F1623011F0673092 -:104E100019F4E55EF64B3DC0E95EF64B3AC0611110 -:104E20000EC0E091460AC130D10541F1C230D10532 -:104E300059F1CD2BE9F0F0E0EE0FFF1F16C0F0E0C6 -:104E4000EE0FFF1F623011F0673019F4E150F74B9D -:104E500002C0E550F74B859194910F94EC931C168A -:104E60001D06FCF2DF91CF910895ED5EF64B11C067 -:104E7000F0E0EE0FFF1FE15FF64B0BC0F0E0EE0F2E -:104E8000FF1FED5FF64B05C0F0E0EE0FFF1FE95F7F -:104E9000F64B85919491DF91CF910D94EC9387EF30 -:104EA0009FE00F94EDCC8F3F49F46FEF87EF9FE0C9 -:104EB0000F94FFCC80E090E00D94AC6FE091460A37 -:104EC000F0E0EE0FFF1FE355FA4B8591949140E01F -:104ED00060E00F9401888111E8CF0F94B14281E026 -:104EE0000F94098782E00D943C846F927F928F9299 -:104EF0009F92BF92DF92EF92FF920F931F93CF93F7 -:104F0000DF938091F9199091FA19A091FB19B09152 -:104F1000FC1981309048A105B10540F01092F919B3 -:104F20001092FA191092FB191092FC198091F9193C -:104F30009091FA19A091FB19B091FC19B695A7951B -:104F4000979587954091FE1950E060E070E08417D6 -:104F50009507A607B70710F48093FE19C091FE19B4 -:104F6000B090FF19B2FABB24B0F8D12CD1E05BEAC3 -:104F7000852E57E4952E6DED662E66E4762E05E5BA -:104F800019E479EDE72E75E4F72EC11140C0809148 -:104F9000D4028823E1F0E091460AF0E0EE0FFF1F13 -:104FA000E753F84B659174918091F9199091FA1932 -:104FB000A091FB19B091FC1923E00297A105B1055E -:104FC00010F443E001C040E28D2D0F94DC3BBB2088 -:104FD000F1F08091F9199091FA19A091FB19B09113 -:104FE000FC190297A105B10590F40F946C3D86EA77 -:104FF00091E0DF91CF911F910F91FF90EF90DF90A3 -:10500000BF909F908F907F906F900D94273E8091DE -:10501000821A8111DAC24091F9195091FA196091FE -:10502000FB197091FC19C13009F03BC08091D4028A -:105030008823A1F0F701859194917695679557950E -:10504000479520E2413051056105710511F44EE3A9 -:1050500001C040E2BC018D2D0F94DC3BBB2009F464 -:105060000FC28091F9199091FA19A091FB19B09192 -:10507000FC19B695A795979587950197A105B10558 -:1050800009F0FEC10F946C3DDF91CF911F910F91FC -:10509000FF90EF90DF90BF909F908F907F906F90E8 -:1050A000FECEC230B9F58091D4028823D1F0E091D0 -:1050B000460AF0E0EE0FFF1FEB51FA4B85919491F9 -:1050C00076956795579547952EE7423051056105CE -:1050D000710511F44EE301C040E2BC018D2D0F9427 -:1050E000DC3BBB2009F4CCC18091F9199091FA19ED -:1050F000A091FB19B091FC19B695A7959795879546 -:105100000297A105B10509F0BBC10F946C3D8CEB72 -:1051100091E04DC2C33091F58091D4028823A1F073 -:10512000F80185919491769567955795479520E27A -:10513000433051056105710511F44EE301C040E2B1 -:10514000BC018D2D0F94DC3BBB2009F499C18091EB -:10515000F9199091FA19A091FB19B091FC19B69523 -:10516000A795979587950397A105B10509F088C183 -:105170000F946C3D61E08FEE9DE5D2C1C43009F023 -:105180003CC08091D4028823A1F0F30185919491D1 -:10519000769567955795479520E24430510561050E -:1051A000710511F44EE301C040E2BC018D2D0F9456 -:1051B000DC3BBB2009F464C18091F9199091FA1984 -:1051C000A091FB19B091FC19B695A7959795879575 -:1051D0000497A105B10509F053C10F946C3DDF910F -:1051E000CF911F910F91FF90EF90DF90BF909F9014 -:1051F0008F907F906F900D949B8AC53009F042C0CC -:105200008091D4028823D1F0E091460AF0E0EE0FBD -:10521000FF1FED50F74B85919491769567955795C3 -:10522000479520E2453051056105710511F44EE3C3 -:1052300001C040E2BC018D2D0F94DC3BBB2009F482 -:105240001FC18091F9199091FA19A091FB19B091A1 -:10525000FC19B695A795979587950597A105B10572 -:1052600009F00EC10F946C3DDF91CF911F910F910A -:10527000FF90EF90DF90BF909F908F907F906F9006 -:105280000D94CE42C630B9F58091D4028823D1F076 -:10529000E091460AF0E0EE0FFF1FE15EF74B8591CB -:1052A000949176956795579547952EE74630510529 -:1052B0006105710511F44EE301C040E2BC018D2D82 -:1052C0000F94DC3BBB2009F4DBC08091F91990916D -:1052D000FA19A091FB19B091FC19B695A79597956D -:1052E00087950697A105B10509F0CAC00F946C3DDA -:1052F00084EC91E05CC1C73089F58091D4028823A9 -:10530000A1F0F4018591949176956795579547950D -:105310002EE7473051056105710511F44EE301C0D8 -:1053200040E2BC018D2D0F94DC3BBB2009F4A8C0EA -:105330008091F9199091FA19A091FB19B091FC197B -:10534000B695A795979587950797A105B10509F09B -:1053500097C00F946C3D8EE391E029C1C830B9F538 -:105360008091D4028823D1F0E091460AF0E0EE0F5C -:10537000FF1FE35CF64B8591949176956795579561 -:1053800047952EE7483051056105710511F44EE34C -:1053900001C040E2BC018D2D0F94DC3BBB2009F421 -:1053A0006FC08091F9199091FA19A091FB19B091F1 -:1053B000FC19B695A795979587950897A105B1050E -:1053C00009F05EC00F946C3D84E391E0F0C0C930F9 -:1053D000A9F58091D4028823D1F0E091460AF0E04B -:1053E000EE0FFF1FE559F84B8591949176956795DF -:1053F000579547952EE7493051056105710511F420 -:105400004EE301C040E2BC018D2D0F94DC3BBB207C -:10541000B9F18091F9199091FA19A091FB19B09105 -:10542000FC19B695A795979587950997A105B1059C -:1054300039F50F946C3D86E591E0B9C0CA30B9F5F5 -:105440008091D4028823D1F0E091460AF0E0EE0F7B -:10545000FF1FED59F94B8591949176956795579576 -:1054600047952EE74A3051056105710511F44EE369 -:1054700001C040E2BC018D2D0F94DC3BB11002C095 -:105480002DE0A4C08091F9199091FA19A091FB190F -:10549000B091FC19B695A795979587950A97A105A0 -:1054A000B10571F70F946C3D8CE791E080C0CB3073 -:1054B00009F044C08091D4028823D1F0E091460ADB -:1054C000F0E0EE0FFF1FE151F74B85919491769537 -:1054D00067955795479520E24B3051056105710559 -:1054E00011F44EE301C040E2BC018D2D0F94DC3B72 -:1054F000BB2031F28091F9199091FA19A091FB1912 -:10550000B091FC19B695A795979587950B97A1052E -:10551000B10509F0B5CF0F946C3D61E08BEE9DE5D0 -:10552000DF91CF911F910F91FF90EF90DF90BF908F -:105530009F908F907F906F900C94BCC5CC3009F0F9 -:105540009FCF8091D4028823D1F0E091460AF0E009 -:10555000EE0FFF1FED51F74BA591B491769567952E -:10556000579547952EE74C3051056105710511F4AB -:105570004EE301C040E2BD018D2D0F94DC3BBB200A -:1055800009F47ECF8091F9199091FA19A091FB1935 -:10559000B091FC19B695A795979587950C97A1059D -:1055A000B10509F06DCF0F946C3D82E691E0DF917B -:1055B000CF911F910F91FF90EF90DF90BF909F9040 -:1055C0008F907F906F900D94A53F21E08091F91905 -:1055D0009091FA19A091FB19B091FC19B695A79575 -:1055E00097958795422F50E060E070E0841795070B -:1055F000A607B70788F0822F90E0880F991F0197C0 -:10560000AA2797FDA095BA2F8093F9199093FA19BC -:10561000A093FB19B093FC194091F9195091FA1914 -:105620006091FB197091FC19769567955795479590 -:105630008091FE1990E00396242F30E082179307A3 -:1056400054F48DEF840F8093FE19D093D402CCEFE5 -:10565000C40FDD24DA94D394CF5F83E08D1508F076 -:1056600094CCDF91CF911F910F91FF90EF90DF903D -:10567000BF909F908F907F906F900895CF92DF9210 -:10568000EF92FF921F93CF93DF930F9435480E94C0 -:10569000FEFA80E69FE00F94F5CC6B017C0180E080 -:1056A0000F9409870F945948E091460AF0E0EE0FF5 -:1056B000FF1FEF57FA4B859194910F94FF5BE09198 -:1056C000460AF0E0EE0FFF1FEF50F84B4591549162 -:1056D00061E080E00F94656CE091460AF0E0EE0F27 -:1056E000FF1FE95FF84B4591549162E080E00F9411 -:1056F000656CCCE2DAE011E020E030E048E453E40D -:10570000688179818A819B810F946FC087FF21C056 -:105710004FEF58E5612F8BE00F94656C48815981FC -:105720006A817B8122E030E080E09AE10F94EFBB58 -:1057300020E030E0A901688179818A819B810F9402 -:105740006FC0881F8827881F4CEF58E5612F805F46 -:1057500004C048EF58E5612F8BE00F94656C2496E8 -:105760001F5F133049F684EF91E00E94AD6084E042 -:1057700090E090931802809317020F94364B81119A -:1057800005C084E690E00E94AD60F7CF84EF91E021 -:105790000E94AD600F945948E091460AF0E0EE0F88 -:1057A000FF1FEB53F84B859194910F94FF5B20E022 -:1057B00030E048EC52E4C701B6010F946FC087FF98 -:1057C00023C040E06FE080E09AE10E94524020E078 -:1057D00030E044E353E4C701B6010F9444C32BED1A -:1057E0003FE049E450E40F9476C0AB01BC0122E0F5 -:1057F00030E080E09AE10F94EFBB62EB75E080E06F -:105800009AE10F9457BA06C044EF58E560E080E192 -:105810000F94656C4FED58E561E080E00F94656C86 -:10582000E091460AF0E0EE0FFF1FE95AF94B45916F -:10583000549162E080E00F94656C4EED58E562E0B3 -:105840008FE00F94656C20E030E044E353E4609116 -:10585000D1057091D2058091D3059091D4050F9414 -:1058600044C32BED3FE049E450E40F9476C0AB0114 -:10587000BC0122E030E080E09AE10F94EFBB62EBE4 -:1058800075E080E09AE10F9457BAE091460AF0E0A3 -:10589000EE0FFF1FE959F94B4591549163E080E009 -:1058A0000F94656C4DED58E563E08FE00F94656CE7 -:1058B00020E030E044E353E46091CD057091CE05E3 -:1058C0008091CF059091D0050F9444C32BED3FE01C -:1058D00049E450E40F9476C0AB01BC0122E030E013 -:1058E00080E09AE10F94EFBB62EB75E080E09AE113 -:1058F0000F9457BA84EF91E00E94AD600F94364B3D -:10590000811103C084E690E0F7CF81E090E09093AE -:1059100018028093170284EF91E00E94AD600F940B -:10592000AD470F94B14281E00F94098782E0DF9187 -:10593000CF911F91FF90EF90DF90CF900D943C841A -:105940008F929F92AF92BF92CF92DF92EF92FF928F -:105950000F931F93CF93DF9380918B1A882321F0AD -:105960009091D4029230B1F581E080938B1A8091AE -:10597000B80C882339F06DE87AE180E89AE00E945B -:1059800048C401C080E080938C1A8823E9F180919B -:10599000901A1F928F9380918F1A1F928F938091EC -:1059A0008E1A1F928F9380918D1A1F928F938EE67D -:1059B0009FE59F938F9381E99AE19F938F930F9433 -:1059C000C1CA8DB79EB70C960FB6F8949EBF0FBE96 -:1059D0008DBF1AC090918C1A9923B1F090918D1AB5 -:1059E000911112C090918E1A91110EC090918F1A40 -:1059F00091110AC09091901A911106C08F5F809307 -:105A00008B1A803109F4B4C58091F9199091FA1973 -:105A1000A091FB19B091FC1981309048A105B10506 -:105A200040F01092F9191092FA191092FB19109285 -:105A3000FC198091F9199091FA19A091FB19B09174 -:105A4000FC19B695A795979587954091FE1950E05A -:105A500060E070E084179507A607B70710F48093FD -:105A6000FE190091FE19F090FF19F2FAFF24F0F8E8 -:105A700010E0CDE0D8E4EE24E3944091F919509180 -:105A8000FA196091FB197091FC1901113CC08091C9 -:105A9000D4028823B1F0E091460AF0E0EE0FFF1F38 -:105AA000E753F84B8591949123E04230510561050D -:105AB000710510F443E001C040E2BC01812F0F9456 -:105AC000DC3BFF2009F457C28091F9199091FA1933 -:105AD000A091FB19B091FC190297A105B10508F03E -:105AE0004AC20F946C3D86EA91E0DF91CF911F91FD -:105AF0000F91FF90EF90DF90CF90BF90AF909F906D -:105B00008F900D94273E013059F58091D40288235F -:105B100091F0769567955795479523E0413051056B -:105B20006105710511F443E001C040E264E67FE5E0 -:105B3000812F0F94DC3BFF2009F41DC28091F919DD -:105B40009091FA19A091FB19B091FC19B695A795FF -:105B5000979587950197A105B10509F00CC2C1CFB2 -:105B6000023059F58091D402882391F0769567959B -:105B70005795479523E0423051056105710511F4B1 -:105B800043E001C040E263E57FE5812F0F94DC3BF9 -:105B9000FF2009F4F0C18091F9199091FA19A091B0 -:105BA000FB19B091FC19B695A79597958795029723 -:105BB000A105B10509F0DFC194CF033099F58091BB -:105BC000D4028823D1F0E091460AF0E0EE0FFF1FE7 -:105BD000E35DF84B85919491769567955795479538 -:105BE00023E0433051056105710511F443E001C024 -:105BF00040E2BC01812F0F94DC3BFF2009F4BBC1C4 -:105C00008091F9199091FA19A091FB19B091FC19A2 -:105C1000B695A795979587950397A105B10509F0C6 -:105C2000AAC15FCF043099F58091D4028823D1F0C6 -:105C3000E091460AF0E0EE0FFF1FE75DF84B85911B -:105C40009491769567955795479523E04430510593 -:105C50006105710511F443E001C040E2BC01812FF0 -:105C60000F94DC3BFF2009F486C18091F9199091D3 -:105C7000FA19A091FB19B091FC19B695A7959795C3 -:105C800087950497A105B10509F075C12ACF0530A4 -:105C900099F58091D4028823D1F0E091460AF0E092 -:105CA000EE0FFF1FEB5DF84B85919491769567950C -:105CB0005795479523E0453051056105710511F46D -:105CC00043E001C040E2BC01812F0F94DC3BFF2088 -:105CD00009F451C18091F9199091FA19A091FB1919 -:105CE000B091FC19B695A795979587950597A1054D -:105CF000B10509F040C1F5CE063059F58091D402C6 -:105D0000882391F0769567955795479523E046301F -:105D100051056105710511F443E001C040E266E4FC -:105D20007FE5812F0F94DC3BFF2009F424C1809193 -:105D3000F9199091FA19A091FB19B091FC19B69537 -:105D4000A795979587950697A105B10509F013C109 -:105D5000C8CE073059F58091D402882391F076950A -:105D600067955795479523E04730510561057105C3 -:105D700011F443E001C040E26BE37FE5812F0F9413 -:105D8000DC3BFF2009F4F7C08091F9199091FA19D2 -:105D9000A091FB19B091FC19B695A7959795879599 -:105DA0000797A105B10509F0E6C09BCE083059F56B -:105DB0008091D402882391F0769567955795479501 -:105DC00023E0483051056105710511F443E001C03D -:105DD00040E262E37FE5812F0F94DC3BFF2009F472 -:105DE000CAC08091F9199091FA19A091FB19B0914C -:105DF000FC19B695A795979587950897A105B105C4 -:105E000009F0B9C06ECE093059F58091D4028823CB -:105E100091F0769567955795479523E04930510560 -:105E20006105710511F443E001C040E268E27FE5DD -:105E3000812F0F94DC3BFF2009F49DC08091F9195C -:105E40009091FA19A091FB19B091FC19B695A795FC -:105E5000979587950997A105B10509F08CC041CEAA -:105E60000A3059F58091D402882391F07695679590 -:105E70005795479523E04A3051056105710511F4A6 -:105E800043E001C040E26BE17FE5812F0F94DC3BF2 -:105E9000FF2009F470C08091F9199091FA19A0912E -:105EA000FB19B091FC19B695A795979587950A9718 -:105EB000A105B10509F05FC014CE0B3089F58091C2 -:105EC000D4028823D1F0E091460AF0E0EE0FFF1FE4 -:105ED000E355F74B8591949176956795579547953E -:105EE00023E04B3051056105710511F443E001C019 -:105EF00040E2BC01812F0F94DC3BFF20E1F1809157 -:105F0000F9199091FA19A091FB19B091FC19B69565 -:105F1000A795979587950B97A105B10561F5E1CDFB -:105F20000C3049F58091D402882391F076956795DD -:105F30005795479523E04C3051056105710511F4E3 -:105F400043E001C040E26FE07FE5812F0F94DC3B2E -:105F5000FF2089F08091F9199091FA19A091FB190D -:105F6000B091FC19B695A795979587950C97A105C3 -:105F7000B10509F4B6CD80918C1A882309F48BC041 -:105F80008091F9199091FA19A091FB19B091FC191F -:105F90000D3059F52091D402222389F0B695A795AA -:105FA0009795879523E00D97A105B10511F443E07E -:105FB00001C040E262E07FE5812F0F94DC3BF110ED -:105FC00003C060E1C62E69C08091F9199091FA1959 -:105FD000A091FB19B091FC19B695A7959795879557 -:105FE0000D97A105B10569F77CCD0E3051F52091D3 -:105FF000D402222389F0B695A7959795879523E03B -:106000000E97A105B10511F443E001C040E260EF35 -:106010007EE5812F0F94DC3BFF2009F47AC080914C -:10602000F9199091FA19A091FB19B091FC19B69544 -:10603000A795979587950E97A105B10509F069C0B9 -:1060400050CD0F3009F0BDCF2091D402222371F042 -:10605000B695A795979587950F97A105B10511F46A -:1060600063E001C060E2812F0F945544FF2009F4E2 -:1060700050C08091F9199091FA19A091FB19B09133 -:10608000FC19B695A795979587950F97A105B1052A -:1060900009F03FC026CDEDE0CE2EC0123CC080916D -:1060A000D4028823F1F08091F9199091FA19A09106 -:1060B000FB19B091FC19B695A795979587954C2D2E -:1060C00050E060E070E023E084179507A607B7076B -:1060D00011F443E001C040E263EE7EE5812F0F94AE -:1060E000DC3BFF20C1F08091F9199091FA19A09141 -:1060F000FB19B091FC19B695A795979587954C2DEE -:1061000050E060E070E084179507A607B70719F420 -:10611000E8CC50E1C52EDD24D394DC0C8091820ABA -:1061200081115FC08091750A81115BC08091851AD1 -:106130009091861A089709F454C0D0124FC08091EC -:10614000D402882329F1E091460AF0E0EE0FFF1F08 -:10615000E357FA4B659174918091F9199091FA196E -:10616000A091FB19B091FC19B695A79597958795C5 -:106170008D2C912CA12CB12C20E288159905AA0513 -:10618000BB0511F44EE301C040E2812F0F94DC3BCC -:10619000FF2021F18091F9199091FA19A091FB1932 -:1061A000B091FC19B695A795979587954D2D50E020 -:1061B00060E070E084179507A607B70779F40F949D -:1061C0006C3DDF91CF911F910F91FF90EF90DF9089 -:1061D000CF90BF90AF909F908F9050CAF2E0DF2E8B -:1061E000DC0CD0123FC08091D4028823F9F0FE016C -:1061F000659174918091F9199091FA19A091FB1908 -:10620000B091FC19B695A795979587958D2C912CF3 -:10621000A12CB12C2EE788159905AA05BB0511F410 -:106220004EE301C040E2812F0F94DC3BFF20D1F010 -:106230008091F9199091FA19A091FB19B091FC196C -:10624000B695A795979587954D2D50E060E070E045 -:1062500084179507A607B70729F40F946C3D8EEBBA -:1062600091E020C1CC24C394CD0CC01245C08091D4 -:10627000D402882329F1E091460AF0E0EE0FFF1FD7 -:10628000E754F84B659174918091F9199091FA193E -:10629000A091FB19B091FC19B695A7959795879594 -:1062A0008C2C912CA12CB12C2EE788159905AA05D0 -:1062B000BB0511F44EE301C040E2812F0F94DC3B9B -:1062C000FF20D1F08091F9199091FA19A091FB1952 -:1062D000B091FC19B695A795979587954C2D50E0F0 -:1062E00060E070E084179507A607B70729F40F94BC -:1062F0006C3D84E791E0D6C0F2E0CF2ECD0CC01209 -:1063000045C08091D402882329F1E091460AF0E04B -:10631000EE0FFF1FEF54F84B659174918091F919BE -:106320009091FA19A091FB19B091FC19B695A79517 -:10633000979587958C2C912CA12CB12C2EE7881544 -:106340009905AA05BB0511F44EE301C040E2812F77 -:106350000F94DC3BFF20D1F08091F9199091FA194C -:10636000A091FB19B091FC19B695A79597958795C3 -:106370004C2D50E060E070E084179507A607B70742 -:1063800029F40F946C3D8AE391E08CC033E0C32E76 -:10639000CD0CC01245C08091D402882329F1E09130 -:1063A000460AF0E0EE0FFF1FE355F84B659174913C -:1063B0008091F9199091FA19A091FB19B091FC19EB -:1063C000B695A795979587958C2C912CA12CB12CDF -:1063D0002EE788159905AA05BB0511F44EE301C007 -:1063E00040E2812F0F94DC3BFF20D1F08091F9191E -:1063F0009091FA19A091FB19B091FC19B695A79547 -:10640000979587954C2D50E060E070E084179507D4 -:10641000A607B70729F40F946C3D88EE91E042C0BF -:1064200064E0C62ECD0CC0124BC08091D4028823EC -:10643000F1F08091F9199091FA19A091FB19B0919E -:10644000FC19B695A79597958795402F50E060E089 -:1064500070E02EE784179507A607B70711F44EE3FF -:1064600001C040E26DED7EE5812F0F94DC3BFF2003 -:1064700039F18091F9199091FA19A091FB19B09115 -:10648000FC19B695A795979587954C2D50E060E03F -:1064900070E084179507A607B70791F40F946C3D39 -:1064A0008CE291E0DF91CF911F910F91FF90EF90DF -:1064B000DF90CF90BF90AF909F908F900D94A53FAD -:1064C00025E02D0D4091F9195091FA196091FB19B1 -:1064D0007091FC197695679557954795822F90E0B6 -:1064E000A0E0B0E0481759076A077B0788F0822FC1 -:1064F00090E0880F991F0197AA2797FDA095BA2FC2 -:106500008093F9199093FA19A093FB19B093FC1991 -:106510004091F9195091FA196091FB197091FC1989 -:1065200076956795579547958091FE1990E003966B -:10653000242F30E0821793074CF48DEF840F809363 -:10654000FE19E092D4020CEF040F1FEF1F5F0F5FE4 -:10655000143008F492CADF91CF911F910F91FF90F0 -:10656000EF90DF90CF90BF90AF909F908F90089565 -:1065700010928B1A49CABF92CF92DF92EF92FF928C -:106580000F931F93CF93DF93E090A81AFF24E7FCAB -:10659000F0940F945948E091460AF0E0EE0FFF1F87 -:1065A000E952F74B859194910F94FF5B41E060E0D5 -:1065B00080E09AE10E94524062E676E080E09AE153 -:1065C00076D711E0C7E8D8E497E8C92E98E4D92E29 -:1065D000FE0145915491612F81E00F94656C1F5F1E -:1065E000143091F784E090E09093180280931702A2 -:1065F000BB24B394C0E0D0E001E010E0F601859147 -:1066000094910F94A3C862E0680F402F80E09AE154 -:106610000E945240B8016C0F7D1F4AE050E080E0BC -:106620009AE1ECD70F5F1F4F0430110539F70F9433 -:10663000112A81E00E94CF606091A81A772767FD38 -:1066400070959701261B370B37FF03C031952195B5 -:106650003109253031050CF47CC06E157F050CF432 -:10666000BA94E616F7060CF4B39483E08B15E4F4C1 -:10667000209709F098C00F945948E091460AF0E03D -:10668000EE0FFF1FE952F74B859194910F94FF5B3A -:10669000C1E0F601459154916C2F81E00F94656C37 -:1066A000CF5FC430B1F77DC01B14ECF02097C9F068 -:1066B00021970F945948E091460AF0E0EE0FFF1F32 -:1066C000E952F74B859194910F94FF5B11E0F6012D -:1066D00045915491612F81E00F94656C1F5F1430D8 -:1066E000B1F7BB24B39441E060E080E09AE10E94FE -:1066F000524062ED77E080E09AE1D9D642E060E076 -:1067000080E09AE10E94524062ED77E080E09AE1F9 -:10671000CED643E060E080E09AE10E94524062ED14 -:1067200077E080E09AE1C3D64B2D60E080E09AE10B -:106730000E94524062E676E080E09AE1B8D6E090AE -:10674000A81AFF24E7FCF09464E670E080E090E093 -:106750001ED40F94364B882309F44ECF82E00F9459 -:106760003C840F94364B8111FCCF6AE070E080E0EE -:1067700090E00DD40F94364B8111FCCF82E090E075 -:1067800090931802809317028C2F8B0D8150DF910C -:10679000CF911F910F91FF90EF90DF90CF90BF901E -:1067A0000895C1E0D0E013E0B12E9DCF682F80E0C6 -:1067B0009AE10C9414438EEA9FE50895982F9F7DEB -:1067C00051F0893041F08A3031F091E08D3009F09C -:1067D00090E0892F089581E008955F926F927F92F3 -:1067E0008F929F92AF92BF92CF92DF92EF92FF92E1 -:1067F0000F931F93CF93DF9300D01F92CDB7DEB7D7 -:10680000582E8B01682E792E4301F30181913F01AF -:1068100020ED280F2A30C0F38E3211F0712CC6C043 -:106820006F015601F60181916F0120ED280F2A308A -:10683000C0F38E3299F79F017901F90140812F5FF2 -:106840003F4F80ED840F8A30B8F3842F4B839C83B5 -:10685000B5DF4B819C81811102C04D32F9F61A825D -:1068600019824AE050E0BE016F5F7F4F852D0F9483 -:1068700047C7F8017183608389819A8188159905DA -:1068800069F64AE050E0BE016F5F7F4FC3010F948D -:1068900047C7F8017383628389819A818A159B05B2 -:1068A00009F0BCCF4AE050E0BE016F5F7F4FC601E8 -:1068B0000F9447C7F80175836483A980BA80AE142A -:1068C000BF0409F0ABCF8FE790E097838683670121 -:1068D000FFEFCF1ADF0AF70180818D3201F5460103 -:1068E0007401FFEF8F1A9F0AF701808167DF782E0E -:1068F0008823B1F3EC18FD089E2C97013327233031 -:10690000310581F443E050E060EA7FE5C6010F9471 -:10691000C4C8892B41F5F8011782168247C0772435 -:10692000739444C02530310561F445E050E06AE9D4 -:106930007FE5C6010F94C4C8892BA9F481E090E0DB -:106940000EC02430310579F444E050E065E97FE57C -:10695000C6010F94C4C8892B31F482E090E0F8019D -:106960009783868323C08EEF8E0D823008F056CF3A -:10697000F5018181823709F051CF8281833609F098 -:106980004DCFF2E09F1203C083E090E0E8CFF50125 -:10699000238180ED820F8A3008F040CF332727FD16 -:1069A00030952E523109F80137832683872D0F90B9 -:1069B0000F900F900F90DF91CF911F910F91FF904B -:1069C000EF90DF90CF90BF90AF909F908F907F908F -:1069D0006F905F9008954423B9F0FC012491FB016E -:1069E0003491231778F0FC012491FB013491321784 -:1069F00048F0FC012491222339F0415001966F5F49 -:106A00007F4FE9CF81E0089580E008956F927F92F3 -:106A10008F929F92AF92BF92CF92DF92EF92FF92AE -:106A20000F931F93CF93DF93CDB7DEB727970FB6A2 -:106A3000F894DEBF0FBECDBF4C018B01FC018491E9 -:106A400080538A3010F43196FACF84918E3209F057 -:106A5000F7C05F018FEFA81AB80AF501849180533F -:106A60008A3010F43196FACF84918E3209F0E8C062 -:106A70006F018FEFC81AD80A7601F701849180530D -:106A80008A3020F4EFEFEE1AFE0AF7CFF701849177 -:106A900095DE811105C0F70184918D3209F0D0C0D7 -:106AA0003501681879088FEF860D853008F0C8C069 -:106AB000682E712CA301B401CE0101960F9488C8F1 -:106AC000E1E0F0E0EC0FFD1FE60DF71D10821F82E4 -:106AD0001E824AE050E0BE016A5F7F4FCE01019600 -:106AE0000F9447C7F80171836083EE81FF81808135 -:106AF0008111A6C046018A189B088FEF880D85304A -:106B000008F09EC0882E912CA401B501CE010196FB -:106B10000F9488C8E1E0F0E0EC0FFD1FE80DF91DCF -:106B200010824AE050E0BE016A5F7F4FCE010196BD -:106B30000F9447C7F80173836283EE81FF818081E0 -:106B400081117EC0C7018C199D09853008F078C07D -:106B50005C01BB24A501B601CE0101960F9488C843 -:106B6000E1E0F0E0EC0FFD1FEA0DFB1D10824AE0B2 -:106B700050E0BE016A5F7F4FCE0101960F9447C778 -:106B8000F80175836483EE81FF818081811158C093 -:106B90008FE790E0F80197838683F70184918D3227 -:106BA00089F56701FFEFCF1ADF0A5601F5018491DD -:106BB00005DE982E811104C08FEFA81AB80AF6CF0F -:106BC000AC18BD088A2C950133272330310541F4D8 -:106BD0004A2D60EA7FE5C601FEDE811107C015C0BF -:106BE00025303105B1F024303105E9F08EEF8A0D02 -:106BF000823030F542E062E97FE5C601ECDE8111CA -:106C00001FC020C09924939431C0F80117821682C6 -:106C10002DC04A2D6AE97FE5C601DDDE8111E6CF90 -:106C200081E090E009C04A2D65E97FE5C601D3DE29 -:106C30008111DCCF82E090E0F8019783868316C053 -:106C4000912C14C0F2E08F1203C083E090E0F4CFE7 -:106C5000F7013396849180538A3090F7E490F12CB9 -:106C6000FEE2EF1AF108F801F782E682892D2796F5 -:106C70000FB6F894DEBF0FBECDBFDF91CF911F914D -:106C80000F91FF90EF90DF90CF90BF90AF909F90CB -:106C90008F907F906F900895DF92EF92FF920F9305 -:106CA0001F93CF93DF93CDB7DEB761970FB6F894FC -:106CB000DEBF0FBECDBFD82EE92EBE01675F7F4F6E -:106CC0008CDD811102C0F12C74C0BE016F5F7F4F5B -:106CD0008EEA9FE59BDEF82E8823A9F3FE01399604 -:106CE000DE011196BE016F5E7F4F219131918D9132 -:106CF0009D918217930740F02817390708F459C06F -:106D0000E617F70791F755C0E091460AF0E0EE0F5D -:106D1000FF1FEB56F84B859194910F94488741E9FA -:106D20005FE562E080E00F94656C0D2D1E2DF8018B -:106D3000E1908F018E2D42DDF82E811103C08E2D42 -:106D400035DDF5CFE091460AF0E0EE0FFF1FEF567C -:106D5000F84B4591549163E080E00F94656C20E01E -:106D600030E0A90168EE73E084E53AD582E390E073 -:106D70000E94AD6084E50F9414BF84EF91E00E94FF -:106D8000AD6020E030E0A90168EE73E084E528D52D -:106D900082E390E00E94AD6084E50F9414BF0F94ED -:106DA0006D4C81E00F9409870F94594880E00F944F -:106DB0003C848F2D61960FB6F894DEBF0FBECDBF19 -:106DC000DF91CF911F910F91FF90EF90DF90089589 -:106DD0000F931F93CF93DF93CDB7DEB728970FB6EE -:106DE000F894DEBF0FBECDBF00E010E0F801EC5517 -:106DF000F04A6491C8010F94FFCC0F5F1F4F0A3017 -:106E00001105A1F7BE016F5F7F4F8EEA9FE5FEDDA2 -:106E10008823C1F069817A818AE090E00F9419CDCE -:106E20006B817C818CE090E00F9419CD6D817E8127 -:106E30008EE090E00F9419CD6F81788580E190E02D -:106E40000F9419CD28960FB6F894DEBF0FBECDBFB4 -:106E5000DF91CF911F910F910895CF93CFB7F89401 -:106E60008091AC1A811112C061E085E385D261E0A6 -:106E700085E349D28CB580618CBD8CB580648CBDB6 -:106E800061E084E340D261E083E33DD28091AC1ABB -:106E90008F5F8093AC1ACFBFCF9108951F920F924E -:106EA0000FB60F9211242F933F938F939F93AF931D -:106EB000BF938091AE1A9091AF1AA091B01AB09181 -:106EC000B11A3091AD1A23E0230F2D3720F401962B -:106ED000A11DB11D05C026E8230F0296A11DB11DFD -:106EE0002093AD1A8093AE1A9093AF1AA093B01A64 -:106EF000B093B11A8091B21A9091B31AA091B41ABA -:106F0000B091B51A0196A11DB11D8093B21A90934C -:106F1000B31AA093B41AB093B51ABF91AF919F91D1 -:106F20008F913F912F910F900FBE0F901F9018954A -:106F30002FB7F8946091AE1A7091AF1A8091B01A81 -:106F40009091B11A2FBF08953FB7F8948091B21A6B -:106F50009091B31AA091B41AB091B51A26B5A89B16 -:106F600005C02F3F19F00196A11DB11D3FBF662737 -:106F7000782F892F9A2F620F711D811D911D42E07C -:106F8000660F771F881F991F4A95D1F708958F9232 -:106F90009F92AF92BF92CF92DF92EF92FF926B01DE -:106FA0007C01D2DF4B015C01C114D104E104F10486 -:106FB000E1F0BAD7C9DF681979098A099B09683EE7 -:106FC00073408105910580F321E0C21AD108E108E0 -:106FD000F10888EE880E83E0981EA11CB11CC11434 -:106FE000D104E104F10431F7DFCFFF90EF90DF909F -:106FF000CF90BF90AF909F908F9008958230910571 -:1070000038F0880F991F880F991F05970197F1F79E -:107010000895789484B5826084BD84B5816084BD10 -:1070200085B5826085BD85B5816085BDEEE6F0E001 -:10703000808181608083E1E8F0E01082808182605D -:107040008083808181608083E0E8F0E080818160DE -:107050008083E1EBF0E0808184608083E0EBF0E00E -:10706000808181608083E1E9F0E0808182608083BB -:10707000808181608083E0E9F0E0808181608083AD -:10708000E1EAF0E08081826080838081816080839A -:10709000E0EAF0E0808181608083E1E2F1E08081DC -:1070A00082608083808181608083E0E2F1E0808182 -:1070B00081608083EAE7F0E0808184608083808162 -:1070C000826080838081816080838081806880830A -:1070D0001092C10008951F93CF93DF93182FEB01F7 -:1070E00061E011D1209711F460E004C0CF3FD105D9 -:1070F00031F461E0812FDF91CF911F913DC1E12FEC -:10710000F0E0E854F04A449150E0FA013197E2315E -:10711000F10508F09BC0E356FF4F0D9484C584B57C -:10712000806884BDC7BD97C084B5806284BDC8BD7A -:1071300092C080918000806880938000D093890005 -:10714000C093880088C08091800080628093800016 -:10715000D0938B00C0938A007EC0809180008860AD -:1071600080938000D0938D00C0938C0074C0809178 -:10717000B00080688093B000C093B3006CC0809171 -:10718000B00080628093B000C093B40064C080916E -:107190009000806880939000D0939900C0939800ED -:1071A0005AC080919000806280939000D0939B00A1 -:1071B000C0939A0050C080919000886080939000A6 -:1071C000D0939D00C0939C0046C08091A000806831 -:1071D0008093A0008091A0008F7B8093A000D0932B -:1071E000A900C093A80037C08091A000806280935E -:1071F000A000D093AB00C093AA002DC08091A00046 -:1072000088608093A000D093AD00C093AC0023C0F1 -:1072100080912001806880932001D0932901C09340 -:10722000280119C080912001806280932001D093B1 -:107230002B01C0932A010FC08091200188608093A8 -:107240002001D0932D01C0932C0105C0C038D10579 -:107250000CF04FCF49CFDF91CF911F91089590E06F -:10726000FC013197E231F10508F04CC0E155FF4FC8 -:107270000D9484C5809180008F7703C08091800039 -:107280008F7D80938000089580918000877FF9CF63 -:1072900084B58F7702C084B58F7D84BD08958091B9 -:1072A000B0008F7703C08091B0008F7D8093B000D5 -:1072B0000895809190008F7707C0809190008F7D16 -:1072C00003C080919000877F809390000895809103 -:1072D000A0008F7707C08091A0008F7D03C08091B0 -:1072E000A000877F8093A0000895809120018F7770 -:1072F00007C0809120018F7D03C080912001877F8E -:10730000809320010895CF93DF9390E0FC01E25F2A -:10731000FF492491FC01EC59FF498491882349F1EC -:1073200090E0880F991FFC01E251FF49A591B491AB -:107330008C529F49FC01C591D4919FB7611108C03F -:10734000F8948C91209582238C93888182230AC0A3 -:10735000623051F4F8948C91322F309583238C93C2 -:107360008881822B888304C0F8948C91822B8C9323 -:107370009FBFDF91CF9108950F931F93CF93DF931A -:107380001F92CDB7DEB7282F30E0F901E854F04A5C -:107390008491F901E25FFF491491F901EC59FF4929 -:1073A00004910023C1F0882319F0698358DF6981B3 -:1073B000E02FF0E0EE0FFF1FEC52FF49A591B491D2 -:1073C0009FB7F8948C91611103C01095812301C07F -:1073D000812B8C939FBF0F90DF91CF911F910F91C5 -:1073E0000895CF93DF93282F30E0F901E854F04A55 -:1073F0008491F901E25FFF49D491F901EC59FF4909 -:10740000C491CC2389F081112ADFEC2FF0E0EE0F3C -:10741000FF1FE654FF49A591B4912C912D2381E0E3 -:1074200090E021F480E002C080E090E0DF91CF9115 -:107430000895CF92DF92EF92FF920F931F93CF9315 -:10744000DF936C017A01EB01E60EF71E00E010E01D -:10745000CE15DF0561F06991D601ED91FC910190A7 -:10746000F081E02DC6011995080F191FF1CFC80151 -:10747000DF91CF911F910F91FF90EF90DF90CF9010 -:1074800008956115710581F0DB010D900020E9F789 -:10749000AD0141505109461B570BDC01ED91FC91A8 -:1074A0000280F381E02D199480E090E00895E9CF07 -:1074B000DC01ED91FC910190F081E02D19948F9207 -:1074C0009F92AF92BF92CF92DF92EF92FF920F9373 -:1074D0001F93CF93DF93CDB7DEB7A1970FB6F89484 -:1074E000DEBF0FBECDBF7C01C42EE52FCB01D22E57 -:1074F00019A221E02D1510F02AE0D22E8E010F5D89 -:107500001F4F8D2C912CA12CB12C6C2D7E2FA50101 -:1075100094010F9446C58C2DD29E801911240150E0 -:1075200011098A3014F4805D01C0895CF801808300 -:10753000211531054105510521F0C22EE32FCA0165 -:10754000E4CFB801C7019DDFA1960FB6F894DEBF66 -:107550000FBECDBFDF91CF911F910F91FF90EF90A4 -:10756000DF90CF90BF90AF909F908F900895CF9273 -:10757000DF92EF92FF920F931F93CF93DF93EC0173 -:107580006A017B012115310579F4E881F9810190C7 -:10759000F081E02D642FDF91CF911F910F91FF902B -:1075A000EF90DF90CF9019942A303105D9F477FF0E -:1075B00018C06DE27DDF8C0144275527BA014C19B4 -:1075C0005D096E097F092AE0CE0179DF800F911FE6 -:1075D000DF91CF911F910F91FF90EF90DF90CF90AF -:1075E00008952AE0B701A601CE01DF91CF911F9146 -:1075F0000F91FF90EF90DF90CF9061CF9A01AB0198 -:10760000662757FD6095762FB2CF2115310541F4DD -:10761000DC01ED91FC910190F081E02D642F199433 -:107620004ECF9A01AB0160E070E0EFCF4F925F92D6 -:107630006F927F928F929F92AF92BF92CF92DF9282 -:10764000EF92FF920F931F93CF93DF93EC016A01A8 -:107650007B01B22E9A01AB01C701B6010F943EC463 -:10766000882319F067E878E025C026013701E894FF -:1076700077F82FEF3FEF4FE75FE7C301B2010F94B9 -:107680003EC481110CC02FEF3FEF4FE75FE7C3010E -:10769000B20125D518161CF46BE878E00BC02FEF6B -:1076A0003FEF4FE75FE4C701B6011CD71816A4F4FB -:1076B0006FE878E0CE01DF91CF911F910F91FF909D -:1076C000EF90DF90CF90BF90AF909F908F907F9082 -:1076D0006F905F904F90D5CE2FEF3FEF4FE75FEC6D -:1076E000C701B601FCD487FDE3CF20E030E0A9015B -:1076F000C701B601F4D487FF09C06DE2CE01D8DE20 -:107700008C01F7FAF094F7F8F09402C000E010E072 -:10771000A12C60E070E080E09FE3AB1439F020E042 -:1077200030E040E251E4E2D4A394F7CF9B01AC01F6 -:10773000C701B601FBD36B017C0145D52B013C0190 -:107740006ED59B01AC01C701B601EFD36B017C0183 -:107750002AE0B301A201CE01B2DE080F191FBB203F -:1077600031F06BE975E0CE018CDE080F191F7B2C20 -:10777000772019F120E030E040E251E4C701B60182 -:1077800083D76B017C011AD54B01AA2497FCA094E6 -:10779000BA2C2AE030E0B501A401CE01E8DE080FE2 -:1077A000191FC501B4013DD59B01AC01C701B6014C -:1077B000BCD36B017C017A94DBCFC801DF91CF9100 -:1077C0001F910F91FF90EF90DF90CF90BF90AF90FF -:1077D0009F908F907F906F905F904F90089526CFED -:1077E0003F924F925F926F927F928F929F92AF9251 -:1077F000BF92CF92DF92EF92FF920F931F93CF939E -:10780000DF9300D01F92CDB7DEB78B0129013A017B -:107810009091E102981721F09F3F09F0B5C204C092 -:10782000E8E0F1E6349004C18093E102E8E0F1E69B -:10783000E491EF3F09F4A8C2E23009F480C074F586 -:10784000EE2309F45BC0E13009F0F1C01092800032 -:1078500010928100909181009860909381009091A6 -:107860008100916090938100282F30E0F901EC595C -:10787000FF49E491F0E0EE0FFF1FEC52FF49459104 -:1078800054915093D41A4093D31AF901E25FFF49FF -:1078900024912093D21A33243394CCC0E43009F4D9 -:1078A0009EC00CF474C0E53009F0C1C010922001F4 -:1078B0001092210190912101986090932101909163 -:1078C0002101916090932101282F30E0F901EC59BA -:1078D000FF49E491F0E0EE0FFF1FEC52FF494591A4 -:1078E00054915093B81A4093B71AF901E25FFF49D7 -:1078F00024912093B61A55E0352E9CC014BC15BCBB -:1079000094B5926094BD95B5916095BD282F30E0F7 -:10791000F901EC59FF49E491F0E0EE0FFF1FEC5242 -:10792000FF49459154915093DB1A4093DA1AF901BB -:10793000E25FFF4924912093D91A312C7BC0109229 -:10794000B0001092B1009091B00092609093B0009E -:107950009091B10091609093B100282F30E0F9012F -:10796000EC59FF49E491F0E0EE0FFF1FEC52FF49A4 -:10797000459154915093CD1A4093CC1AF901E25F8E -:10798000FF4924912093CB1A22E0322E53C010924B -:1079900090001092910090919100986090939100C6 -:1079A00090919100916090939100282F30E0F9011F -:1079B000EC59FF49E491F0E0EE0FFF1FEC52FF4954 -:1079C000459154915093C61A4093C51AF901E25F4C -:1079D000FF4924912093C41AB3E03B2E2BC0109290 -:1079E000A0001092A1009091A10098609093A10036 -:1079F0009091A10091609093A100282F30E0F901AF -:107A0000EC59FF49E491F0E0EE0FFF1FEC52FF4903 -:107A1000459154915093BF1A4093BE1AF901E25F09 -:107A2000FF4924912093BD1A74E0372E03C03E2EE7 -:107A300037FCAAC161E067DC4801A12CB12C832D81 -:107A40008D7F09F0C4C060E072E18AE790E0A50193 -:107A500094010F9468C529833A834B835C83690141 -:107A60007A0181E0C81AD108E108F1089FEFC91630 -:107A7000D104E104F10409F008F497C060E472E471 -:107A80008FE090E0A50194010F9468C569017A0127 -:107A9000E1E0CE1AD108E108F108F2E03F1219C086 -:107AA0008FEFC816D104E104F10409F008F487C08F -:107AB00060E970ED83E090E0A50194010F9468C542 -:107AC00069017A0191E0C91AD108E108F10883E05F -:107AD00001C082E0EFEFCE16D104E104F10409F019 -:107AE00008F464C068E478EE81E090E0A5019401B8 -:107AF000EFD769017A01F1E0CF1AD108E108F10866 -:107B00003320D9F082E038121AC09FEFC916D10491 -:107B1000E104F10409F008F435C164E274EF80E097 -:107B200090E0A5019401D4D769017A01E1E0CE1A71 -:107B3000D108E108F10885E003C083E001C084E0DA -:107B4000FFEFCF16D104E104F10481F178F162E195 -:107B50007AE780E090E0A5019401BAD769017A0143 -:107B600081E0C81AD108E108F108311002C084E0B0 -:107B700001C086E09FEFC916D104E104F104B1F021 -:107B8000A8F0C980DA80EB80FC809AE0F594E79455 -:107B9000D794C7949A95D1F7E1E0CE1AD108E108BD -:107BA000F108332031F087E00BC081E0332011F081 -:107BB00007C085E095B5987F982B95BD54C082E0AD -:107BC0009091B100987F982B9093B1004CC060E0E9 -:107BD00072E18AE790E0A50194017AD769017A0100 -:107BE000F1E0CF1AD108E108F108C114D10481E015 -:107BF000E806F10480F068E478EE81E090E0A50109 -:107C0000940166D769017A0191E0C91AD108E108A7 -:107C1000F10893E001C091E0E1E03E1207C08091DD -:107C20008100887F892B809381001DC0F3E03F1283 -:107C300007C080919100887F892B8093910013C0A9 -:107C400084E0381207C08091A100887F892B80933F -:107C5000A10009C0E5E03E1206C080912101887FA5 -:107C6000892B80932101411451046104710461F056 -:107C7000D801AA0FBB1FA301920161D728EE33E000 -:107C800040E050E003D703C02FEF3FEFA901F2E03F -:107C90003F1609F443C0F315BCF0332081F181E0B5 -:107CA000381272C0D0928900C09288002093D51AF1 -:107CB0003093D61A4093D71A5093D81A80916F00F8 -:107CC000826080936F0060C094E0391609F448C068 -:107CD0003916A4F1E5E03E1257C0D0922901C092B6 -:107CE00028012093B91A3093BA1A4093BB1A5093C3 -:107CF000BC1A8091730082608093730045C0C7BC3A -:107D00002093DC1A3093DD1A4093DE1A5093DF1A69 -:107D100080916E00826080936E0036C0C092B30086 -:107D20002093CE1A3093CF1A4093D01A5093D11A81 -:107D30008091700082608093700026C0D09299007C -:107D4000C09298002093C71A3093C81A4093C91A5A -:107D50005093CA1A8091710082608093710014C0A0 -:107D6000D092A900C092A8002093C01A3093C11AE3 -:107D70004093C21A5093C31A80917200826080931C -:107D8000720002C084E01CCF0F900F900F900F90F4 -:107D9000DF91CF911F910F91FF90EF90DF90CF90E7 -:107DA000BF90AF909F908F907F906F905F904F901B -:107DB0003F9008958230A9F028F4882349F081305B -:107DC00051F00895843021F1E8F0853039F10895BB -:107DD00010926E00089580916F008D7F80936F00E8 -:107DE0000895809170008D7F8093700081E0809372 -:107DF000B0008091B100887F84608093B1001092C0 -:107E0000B3000895809171008D7F80937100089573 -:107E1000809172008D7F809372000895809173002D -:107E20008D7F809373000895CF93C82F8091E102D6 -:107E30008C1307C0E8E0F1E684919FEF9093E10294 -:107E400001C08FEFB7DF60E08C2FCF9195CA1F92F2 -:107E50000F920FB60F9211240BB60F922F933F93F0 -:107E60004F935F936F937F938F939F93AF93BF9342 -:107E7000EF93FF938091CE1A9091CF1AA091D01AD0 -:107E8000B091D11A892B8A2B8B2B51F19091CB1A5F -:107E9000E091CC1AF091CD1A80818927808380915E -:107EA000CE1A9091CF1AA091D01AB091D11A18166B -:107EB00019061A061B06BCF48091CE1A9091CF1AAF -:107EC000A091D01AB091D11A0197A109B10980935C -:107ED000CE1A9093CF1AA093D01AB093D11A03C0A0 -:107EE0008091E102A1DFFF91EF91BF91AF919F914E -:107EF0008F917F916F915F914F913F912F910F9053 -:107F00000BBE0F900FBE0F901F901895089581D84B -:107F1000FDDF0E9449A0C0E0D0E00E940C9C2097A9 -:107F2000E1F30E940000F9CF08955058BB27AA271B -:107F30000ED076C23FD230F044D220F031F49F3FD1 -:107F400011F41EF40FC20EF4E095E7FBDCC1E92F3B -:107F500089D280F3BA17620773078407950718F070 -:107F600071F49EF5B8C20EF4E0950B2EBA2FA02D39 -:107F70000B01B90190010C01CA01A0011124FF27D6 -:107F8000591B99F0593F50F4503E68F11A16F040D1 -:107F9000A22F232F342F4427585FF3CF46953795D0 -:107FA0002795A795F0405395C9F77EF41F16BA0B95 -:107FB000620B730B840BBAF09150A1F0FF0FBB1F43 -:107FC000661F771F881FC2F70EC0BA0F621F731F8C -:107FD000841F48F4879577956795B795F7959E3FE9 -:107FE00008F0B3CF9395880F08F09927EE0F979577 -:107FF00087950895DFD158F080E891E009F49EEF6D -:10800000E0D128F040E851E059F45EEF09C0AAC180 -:1080100062C2E92FE07826D268F3092E052AC1F35F -:10802000261737074807590738F00E2E07F8E025BE -:1080300069F0E025E0640AC0EF6307F8009407FAEE -:10804000DB01B9019D01DC01CA01AD01EF935DD0F7 -:10805000E7D10AD05F91552331F02BED3FE049E4A1 -:1080600050FD49EC63CF0895DF93DD27B92FBF772B -:1080700040E85FE31616170648075B0710F4D92F90 -:1080800096D29F938F937F936F93F5D3E2E8F1E0BD -:108090006CD1C6D12F913F914F915F9101D3DD23D8 -:1080A00049F09058A2EA2AED3FE049EC5FE3D0782E -:1080B0005D274DDFDF91B4C1F7D180F09F3740F4E9 -:1080C00091110EF409C260E070E080E89FE308952A -:1080D00026F01B16611D711D811D1BC135C1EFD01E -:1080E00008F481E0089575D1E395ABC10CD098C137 -:1080F00068D140F05FD130F021F45F3F19F003C147 -:108100005111EAC12FC1AED198F39923C9F3552378 -:10811000B1F3951B550BBB27AA276217730784077A -:1081200038F09F5F5F4F220F331F441FAA1FA9F330 -:1081300033D00E2E3AF0E0E830D091505040E69522 -:10814000001CCAF729D0FE2F27D0660F771F881F83 -:10815000BB1F261737074807AB07B0E809F0BB0B72 -:10816000802DBF01FF2793585F4F2AF09E3F510596 -:1081700068F0C9C0B1C15F3FECF3983EDCF386956F -:1081800077956795B795F7959F5FC9F7880F911D0C -:108190009695879597F90895E1E0660F771F881FF8 -:1081A000BB1F621773078407BA0720F0621B730BAB -:1081B000840BBA0BEE1F88F7E095089504D06894FD -:1081C000B1118AC1089556D188F09F5790F0B92F08 -:1081D0009927B751A0F0D1F0660F771F881F991F1C -:1081E0001AF0BA95C9F712C0B13081F074D1B1E07C -:1081F000089571C1672F782F8827B85F39F0B93F8C -:10820000CCF3869577956795B395D9F73EF490951D -:108210008095709561957F4F8F4F9F4F0895E8949B -:1082200009C097FB3EF490958095709561957F4FBE -:108230008F4F9F4F9923A9F0F92F96E9BB2793956C -:10824000F695879577956795B795F111F8CFFAF47C -:10825000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAD -:1082600016C0882311F096E911C0772321F09EE80B -:10827000872F762F05C0662371F096E8862F70E071 -:1082800060E02AF09A95660F771F881FDAF7880F4B -:108290009695879597F9089507D180F09F3740F418 -:1082A00091110EF019C160E070E080E89FEB089535 -:1082B00026F41B16611D711D811D2BC045C0990F31 -:1082C0000008550FAA0BE0E8FEEF16161706E807A0 -:1082D000F907C0F012161306E407F50798F0621BC1 -:1082E000730B840B950B39F40A2661F0232B242B96 -:1082F000252B21F408950A2609F4A140A6958FEFB5 -:10830000811D811D089597F99F6780E870E060E006 -:108310000895882371F4772321F09850872B762FC6 -:1083200007C0662311F499270DC09051862B70E089 -:1083300060E02AF09A95660F771F881FDAF7880F9A -:108340009695879597F908959F3F31F0915020F4C5 -:10835000879577956795B795880F911D9695879521 -:1083600097F908959FEF80EC0895DF93CF931F93C3 -:108370000F93FF92EF92DF927B018C01689405C00E -:10838000DA2EEF018DD1FE01E894A591259135916A -:1083900045915591AEF3EF01DADDFE019701A80199 -:1083A000DA9479F7DF90EF90FF900F911F91CF91C2 -:1083B000DF91089500240A94161617061806090678 -:1083C000089500240A94121613061406050608954B -:1083D000C9CF50D0E8F3E894E0E0BB279F57F0F016 -:1083E0002AED3FE049EC06C0EE0FBB0F661F771F7A -:1083F000881F28F0B23A62077307840728F0B25A40 -:10840000620B730B840BE3959A9572F7803830F406 -:108410009A95BB0F661F771F881FD2F7904896CF9B -:10842000092E0394000C11F4882352F0BB0F40F482 -:10843000BF2B11F460FF04C06F5F7F4F8F4F9F4FC2 -:108440000895EF93E0FF06C0A2EA2AED3FE049EC71 -:108450005FEB7DDDE5DF0F90039401FC9058EFEAC0 -:10846000F1E048C257FD9058440F551F59F05F3F47 -:1084700071F04795880F97FB991F61F09F3F79F046 -:1084800087950895121613061406551FF2CF4695C8 -:10849000F1DF08C0161617061806991FF1CF86954A -:1084A0007105610508940895E5DFA0F0BEE7B917EE -:1084B00088F4BB279F3860F41616B11D672F782FFC -:1084C0008827985FF7CF869577956795B11D939527 -:1084D0009639C8F30895E894BB2766277727CB0120 -:1084E00097F90895ECDE08F48FEF089563DF19F033 -:1084F00068DF09F037CF07CFB901CA0125CF9F77D1 -:108500005F77B0DF98F39923B9F35523B9F3FF27C9 -:10851000951758F4E52FE91BED3070F75E3B10F02E -:10852000F1E41CC09034E0F40AC0E92FE51BED3003 -:1085300028F79E3B10F0F1E411C0503488F4F9EABA -:1085400088232AF09A95660F771F881FDAF744234D -:108550002AF05A95220F331F441FDAF79F1B5F1B27 -:10856000FF931F930F93FF92EF9279018A01BB272C -:10857000AB2F9B01AC0196D09701A801BF937B0163 -:108580008C01AA27BA2FB901CA018CD0AF919701EB -:10859000A801EF90FF900F911F91D9DC41DF2DD101 -:1085A0004F9140FF0895552747FD509509C09B0105 -:1085B000AC0160E070E080E89FE398CDA4CEC4CE2B -:1085C00059DFE8F39923D9F3940F511DBBF3915070 -:1085D000504094F059F0882332F0660F771F881FBF -:1085E00091505040C1F79E3F510544F7880F911DAF -:1085F0009695879597F908955F3FACF0983E9CF06B -:10860000BB27869577956795B79508F4B1609395E4 -:10861000C1F7BB0F58F711F460FFE8CF6F5F7F4FD2 -:108620008F4F9F4FE3CF58CF25DF58F19E5758F11A -:108630009851A0F0E9F0983020F5092E9927660F9F -:10864000771F881F991F0A94D1F712C0062E672F33 -:10865000782F8827985F11F4000C07C0993FB4F376 -:108660008695779567959395D9F7611D711D811D45 -:108670003EF490958095709561957F4F8F4F9F4FF9 -:108680000895689429CF27CF0BD0CACE93DE28F067 -:1086900098DE18F0952309F036CE64CE11241CCF55 -:1086A000E1DEA0F3959FD1F3950F50E0551F629F37 -:1086B000F001729FBB27F00DB11D639FAA27F00D3B -:1086C000B11DAA1F649F6627B00DA11D661F829F62 -:1086D0002227B00DA11D621F739FB00DA11D621F47 -:1086E000839FA00D611D221F749F3327A00D611D64 -:1086F000231F849F600D211D822F762F6A2F112446 -:108700009F5750408AF0E1F088234AF0EE0FFF1F98 -:10871000BB1F661F771F881F91505040A9F79E3FCF -:10872000510570F0F0CDD8CE5F3FECF3983EDCF30E -:10873000869577956795B795F795E7959F5FC1F70C -:10874000FE2B880F911D9695879597F90895FA014C -:10875000EE0FFF1F30962105310599F16115710566 -:1087600061F48038BFE39B0749F168949038810534 -:1087700061F08038BFEF9B0741F0992342F5FF3F3E -:10878000E1053105210511F1E8940894E795D90137 -:10879000AA2329F4AB2FBE2FF85FD0F310C0FF5FE0 -:1087A00070F4A695E0F7F73950F019F0FF3A38F475 -:1087B0009F779F930CD00F9007FC905808953EF040 -:1087C000D1CD60E070E080E89FE308954FE79F77A8 -:1087D0005F934F933F932F93A3D02F913F914F914E -:1087E0005F9152DF54C09F93F4DD0F9007FCEE5F62 -:1087F00028CE11F40EF4B6CDA7CD3CDED0F39923EC -:10880000D9F3CEF39F57550B87FF6DD00024A0E618 -:1088100040EA900180585695979528F4805C660F41 -:10882000771F881F20F026173707480730F4621B90 -:10883000730B840B202931294A2BA6951794079492 -:10884000202531254A2758F7660F771F881F20F00B -:1088500026173707480730F4620B730B840B200D83 -:10886000311D411DA09581F7B901842F9158880FC2 -:108870009695879508959B01AC0106CF20DD880B66 -:10888000990B089519F40EF03ECD25CE6BCDF2DD97 -:10889000C8F39638C0F707F80F92E8942BE33AEA4A -:1088A00048EB5FE7FFDE0F920F920F924DB75EB776 -:1088B0000F9276D0EDECF1E058DD4F915F91EF91A2 -:1088C000FF91E595EE1FFF1F49F0FE57E068442732 -:1088D000EE0F441FFA95E1F74195550B71DE0F90AD -:1088E00007FE65CE089591505040660F771F881F90 -:1088F000D2F708959F938F937F936F93FF93EF9396 -:108900009B01AC01C1DEEF91FF912FDD2F913F91D3 -:108910004F915F91B9CE0EF017CD24CD6894F3CC72 -:10892000A9DDC8F39923D1F3C6F3DF93CF931F9347 -:108930000F93FF92C92FDD2788232AF02197660F16 -:10894000771F881FDAF720E030E040E85FEB9FE315 -:10895000883920F0803E30F021968F77E7DAE5EF16 -:10896000F1E003C0E3DAE2E2F2E0FFDC8B01BE01FA -:10897000EC01FB2E6F5771097595771F880B990BCA -:1089800050DC28E132E741E35FE38ADEAF2D980156 -:10899000AE01FF900F911F91CF91DF91D8DA40CDBA -:1089A000FA01DC01AA0FBB1F9B01AC01BF5728F4E1 -:1089B00022273327442750781FC0B75188F4AB2FA4 -:1089C0000024469537952795011CA395D2F30020E6 -:1089D00069F0220F331F441FB395DAF30DD0A5CAF7 -:1089E00061307105A0E88A07B94630F49B01AC01FB -:1089F0006627772788279078309621F02083318367 -:108A0000428353830895DB018F939F9398D0BF9146 -:108A1000AF91A29F800D911DA39F900DB29F900DCD -:108A20001124089587FB082E062687FD819567FD92 -:108A3000619599D00EF4919507FC81950895AA1B34 -:108A4000BB1B51E107C0AA1FBB1FA617B70710F039 -:108A5000A61BB70B881F991F5A95A9F7809590956B -:108A6000BC01CD01089597FB072E16F4009406D0A3 -:108A700077FD08D0E4DF07FC05D03EF490958195A2 -:108A80009F4F0895709561957F4F0895A1E21A2E2A -:108A9000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA2 -:108AA000A217B307E407F50720F0A21BB30BE40BF2 -:108AB000F50B661F771F881F991F1A9469F7609539 -:108AC0007095809590959B01AC01BD01CF010895F3 -:108AD000052E97FB16F400940FD057FD05D0D6DF76 -:108AE00007FC02D046F408C050954095309521957A -:108AF0003F4F4F4F5F4F08959095809570956195CA -:108B00007F4F8F4F9F4F0895EE0FFF1F0590F491F9 -:108B1000E02D1994A29FB001B39FC001A39F700DD7 -:108B2000811D1124911DB29F700D811D1124911D75 -:108B30000895F0DFB7FF0895821B930B0895EADFD5 -:108B4000A59F900DB49F900DA49F800D911D1124A1 -:108B50000895B7FFF4CFF3DF821B930B08950790BE -:108B6000F691E02D1994991B79E004C0991F96178E -:108B700008F0961B881F7A95C9F780950895EF92A3 -:108B80000F931F93CF93DF93E80147FF02C034E1B7 -:108B900001C034E0E42FFF27E7FDF095F7FF03C0A5 -:108BA000F195E195F109E32E022F2E2FAE0156D754 -:108BB000CE01DF91CF911F910F91EF9008958F9289 -:108BC0009F92AF92BF92CF92DF92EF92FF920F935C -:108BD0001F93CF93DF938B016115710521F0DB01AA -:108BE0008C9311969C93EC015E01BFEFAB1ABB0A0C -:108BF0007501C8808C2D90E07BD2892B11F0E501A6 -:108C0000F3CFEDE2CE1208C07E01F2E0EF0EF11CD0 -:108C1000C980DD24D39409C02BE2C21205C07E01B5 -:108C200042E0E40EF11CC980D12CE701219743E01A -:108C300050E061E171E6CE018FD2892BB9F4239621 -:108C400045E050E06CE071E6CE0186D2892B09F454 -:108C500025960115110519F0D801CD93DC93D1109B -:108C600000C160E070E080E89FE704C143E050E0AD -:108C700069E071E6CE0170D2892B59F40115110516 -:108C800009F4F4C0B2E0EB0EF11CF801F182E082CD -:108C9000EDC0F70160E070E0CB01C0E0D0E07F0103 -:108CA000A0EDAA2EAC0C29E02A1528F14D2D42602A -:108CB000B42E2D2D2870D2FE04C0211124C021967F -:108CC00022C021112197A5E0B0E09B01AC0137DF64 -:108CD000660F771F881F991F6A0D711D811D911DD9 -:108CE0006839A9E97A078A07A9E19A0760F0BD2DDA -:108CF000B660BB2E08C02EEFA2120AC0D3FC50C033 -:108D00004D2D4860B42E3196D701CC90DB2CC7CFC7 -:108D10002C2D2F7D253409F043C0A081AD3241F4C4 -:108D2000BD2DB061DB2E7F0122E0E20EF11C0CC0F4 -:108D30007F01AB3231F04FEFE41AF40A21E030E06A -:108D400006C0A2E0EA0EF11CA18122E030E0A053AF -:108D5000AA3018F0E21AF30A23C0F70120E030E04D -:108D60002038BCE03B075CF4A901440F551F440FB9 -:108D7000551F240F351F220F331F2A0F311DAF013E -:108D80004F5F5F4F7A01A081A053AA3010F4FA011F -:108D9000E7CFD4FE03C0319521953109C20FD31F0F -:108DA000D1FE09C00115110531F0E1E0EE1AF1081C -:108DB000D801ED92FC9233DA2D2D2370233019F077 -:108DC0004B015C0106C04B015C01B7FAB094B7F8E7 -:108DD000B09420E030E0A901C501B40180D9882316 -:108DE00009F43CC0D7FF06C0D195C195D10908E26E -:108DF00011E602C000E411E66801B8E1CB1AD1081F -:108E000090E2E92EF12CCE15DF056CF0F8012591EA -:108E1000359145915491C501B40136DC4B015C019B -:108E2000CE19DF09F0CF04501109F594E7940C1521 -:108E30001D0549F78A2D880F8B2D881F8F3F41F024 -:108E400020E030E0A901C501B40149D9811106C073 -:108E500082E290E09093FD1A8093FC1AC501B40160 -:108E600009C060E070E080E89FEF04C060E070E05F -:108E700080EC9FE7DF91CF911F910F91FF90EF90D2 -:108E8000DF90CF90BF90AF909F908F9008952F92DA -:108E90003F925F926F927F928F929F92AF92BF921A -:108EA000CF92DF92EF92FF920F931F93CF93DF93B6 -:108EB0008B01EA016115710521F0DB018C9311969C -:108EC0009C93209739F09E012250310923323105BD -:108ED00008F0F8C07C016701BFEFCB1ADB0A56012E -:108EE000F7016080862D90E003D1892B11F0760187 -:108EF000F2CFFDE26F120AC0570182E0A80EB11C4A -:108F0000D70111966C90772473940BC0BBE26B125F -:108F100007C05701E2E0AE0EB11CD70111966C906C -:108F2000712CCE018F7E892B89F4B0E36B1222C0A5 -:108F3000F50180818F7D883541F56180F2E0AF0ECB -:108F4000B11C872D8260782EC0E1D0E0C830D105F9 -:108F5000F1F04CF4C230D10511F5C12CD12CE12C2B -:108F6000B0E4FB2E2EC0CA30D10531F0C031D1059E -:108F700019F115C0209751F7CAE0D0E0ACECCA2E29 -:108F8000DC2CEC2CACE0FA2E1CC02097F9F6C8E0E3 -:108F9000D0E0C12CD12CE12CF0E1FF2E12C060E01A -:108FA00070E080E090E89E01442737FD4095542F03 -:108FB0006DDD69017A0105C0C12CD12CE12CE8E0FE -:108FC000FE2EF50160E020E030E0A9014E01AA2468 -:108FD00097FCA094BA2C1F0170ED572E560CA9E0F7 -:108FE000A51570F48FEB860D8A3118F499EC592E83 -:108FF00006C08FE9860D8A3128F589EA582E560C6D -:10900000852D90E08C179D07ECF467FD17C0C21604 -:10901000D306E406F50678F0C501B401F4DC9B0143 -:10902000AC01250D311D411D511D2130310541057A -:10903000B0E85B0710F06FEF01C061E03196D1013D -:109040006C90C9CF872D81700115110571F06623D1 -:1090500029F03197D801ED93FC9307C071FE19C038 -:109060003297D801ED93FC9314C067FF12C0882398 -:1090700029F020E030E040E050E804C02FEF3FEF5F -:109080004FEF5FE782E290E09093FD1A8093FC1A25 -:1090900016C0882341F050954095309521953F4F5B -:1090A0004F4F5F4F0CC057FF0AC082E290E0909391 -:1090B000FD1A8093FC1A2FEF3FEF4FEF5FE7B901E6 -:1090C000CA0104C060E070E080E090E0DF91CF91E1 -:1090D0001F910F91FF90EF90DF90CF90BF90AF90D6 -:1090E0009F908F907F906F905F903F902F9008950A -:1090F000911109C7803219F089508550D0F7089531 -:109100009111089581548A5108F4805E855A08951A -:10911000FB01DC0102C005900D9241505040D8F790 -:109120000895FB01DC010D900020E9F711970590EF -:109130000D920020E1F70895FB01DC0105900D92EE -:109140000020E1F70895FC0105900020E9F78095E3 -:1091500090958E0F9F1F0895FB01DC0141505040F8 -:1091600088F08D9181341CF08B350CF4805E659114 -:1091700061341CF06B350CF4605E861B611171F379 -:10918000990B0895881BFCCFFB01DC014150504036 -:1091900030F08D910590801919F40020B9F7881BE3 -:1091A000990B0895FB01DC014150504048F00590B7 -:1091B0000D920020C9F701C01D9241505040E0F7C8 -:1091C0000895FB0155915523A9F0BF01DC014D9194 -:1091D00045174111E1F759F4CD010590002049F000 -:1091E0004D9140154111C9F3FB014111EFCF81E0D1 -:1091F00090E001970895FB01DC0104C08D9101907E -:10920000801921F441505040C8F7881B990B0895EC -:10921000FB01DC0102C001900D9241505040D8F793 -:109220000895DC0101C06D9341505040E0F708956E -:10923000FB01DC018D9181341CF08B350CF4805ED8 -:10924000619161341CF06B350CF4605E861B61111A -:1092500089F3990B0895FB01DC010D900020E9F7DB -:10926000119701900D920020E1F70895FC01819182 -:10927000861721F08823D9F7992708953197CF01D0 -:109280000895FB01DC018D91019080190110D9F343 -:10929000990B0895FB01DC0101900D920020E1F78C -:1092A0000895FB01DC014150504030F08D91019058 -:1092B000801919F40020B9F7881B990B0895FB0158 -:1092C000DC014150504048F001900D920020C9F758 -:1092D00001C01D9241505040E0F70895FB015191AB -:1092E0005523A9F0BF01DC014D9145174111E1F76C -:1092F00059F4CD010190002049F04D9140154111E4 -:10930000C9F3FB014111EFCF81E090E0019708958F -:109310000F931F93CF93DF93CDB7DEB708851985E1 -:10932000F801838188608383AE01445F5F4F6A8563 -:109330007B85C80154D1F8012381277F2383DF91E6 -:10934000CF911F910F9108950F931F93CF93DF93A8 -:10935000182F092FEB018B8181FD03C08FEF9FEF49 -:1093600020C082FF10C04E815F812C813D81421759 -:1093700053077CF4E881F9819F012F5F3F4F3983C8 -:109380002883108306C0E885F985812F1995892BDC -:1093900029F72E813F812F5F3F4F3F832E83812FFF -:1093A000902FDF91CF911F910F910895EF92FF922F -:1093B0000F931F93CF93DF93EC018B01DB01139687 -:1093C0008C9181FF17C0E12CF12CFE018491882340 -:1093D00079F0D8011896ED91FC911997B80119957B -:1093E000892B21F0EE24EA94FF24FA942196EDCF04 -:1093F000C70102C08FEF9FEFDF91CF911F910F91B7 -:10940000FF90EF900895CF93DF93CDB7DEB7FE01C5 -:10941000369661917191AF018091F81A9091F91A85 -:10942000DED0DF91CF9108950F931F93CF93DF93F9 -:10943000CDB7DEB7FE0138966191719108EF1AE160 -:10944000D8018D919C91DC0113962C911397286083 -:1094500013962C93AF01C3D0D801ED91FC912381D9 -:10946000277F2383DF91CF911F910F9108950F9351 -:109470001F93CF93DF93E091F81AF091F91A2381AB -:1094800021FF1BC0EC0100E010E089916091F81A07 -:109490007091F91ADB011896ED91FC9119978823C8 -:1094A00031F01995892B89F30FEF1FEFEECF8AE08A -:1094B0001995892B11F4C80102C08FEF9FEFDF913E -:1094C000CF911F910F9108950F931F93CF93DF9327 -:1094D000EC01E091F81AF091F91A838181FF1CC028 -:1094E00000E010E0FE0184916091F81A7091F91A81 -:1094F000DB011896ED91FC911997882339F01995A5 -:10950000892B11F00FEF1FEF2196ECCF8AE0199510 -:10951000892B11F4C80102C08FEF9FEFDF91CF912B -:109520001F910F9108950F931F93CF93DF93CDB7A2 -:10953000DEB72E970FB6F894DEBF0FBECDBF0E89F3 -:109540001F8986E08C831A8309838FEF9FE79E83B0 -:109550008D83AE01465E5F4F688D798DCE01019699 -:109560003ED0EF81F885E00FF11F10822E960FB6E6 -:10957000F894DEBF0FBECDBFDF91CF911F910F9149 -:1095800008950F931F93CF93DF93CDB7DEB72E9738 -:109590000FB6F894DEBF0FBECDBF0E891F898EE0D7 -:1095A0008C831A8309838FEF9FE79E838D83AE019F -:1095B000465E5F4F688D798DCE01019610D0EF81A8 -:1095C000F885E00FF11F10822E960FB6F894DEBFDB -:1095D0000FBECDBFDF91CF911F910F9108952F92B4 -:1095E0003F924F925F926F927F928F929F92AF9233 -:1095F000BF92CF92DF92EF92FF920F931F93CF9380 -:10960000DF93CDB7DEB72C970FB6F894DEBF0FBE51 -:10961000CDBF7C016B018A01FC0117821682838118 -:1096200081FFB0C1CE0101964C01F7019381F60193 -:1096300093FD859193FF81916F01882309F49EC169 -:10964000853239F493FD859193FF81916F018532C5 -:1096500021F4B70190E078DEE8CF512C312C20E0E6 -:109660002032A0F48B3269F030F4803259F083322A -:1096700069F420612CC08D3239F0803339F42160D7 -:1096800026C02260246023C0286021C027FD27C097 -:1096900030ED380F3A3078F426FF06C0FAE05F9ECE -:1096A000300D1124532E13C08AE0389E300D112442 -:1096B000332E20620CC08E3221F426FD5FC120645F -:1096C00006C08C3611F4206802C0883641F4F601D9 -:1096D00093FD859193FF81916F018111C1CF982FE7 -:1096E0009F7D9554933028F40C5F1F4FFFE3F9835F -:1096F0000DC0833631F0833771F0833509F057C0E0 -:1097000021C0F801808189830E5F1F4F4424439458 -:10971000512C540114C03801F2E06F0E711CF80195 -:10972000A080B18026FF03C0652D70E002C06FEFFE -:109730007FEFC5012C87F5D32C0183012C852F7772 -:10974000222E16C03801F2E06F0E711CF801A080C5 -:10975000B18026FF03C0652D70E002C06FEF7FEF80 -:10976000C5012C87D3D32C012C852068222E8301A0 -:1097700023FC19C0832D90E048165906A0F4B701C8 -:1097800080E290E0E1DD3A94F5CFF50127FC859188 -:1097900027FE81915F01B70190E0D6DD31103A9448 -:1097A000F1E04F1A51084114510479F7DEC08436B4 -:1097B00011F0893631F5F80127FF07C0608171810A -:1097C000828193810C5F1F4F08C06081718188275F -:1097D00077FD8095982F0E5F1F4F2F76B22E97FF43 -:1097E00009C090958095709561957F4F8F4F9F4FE1 -:1097F0002068B22E2AE030E0A4019ED3A82EA8183B -:1098000043C0853729F42F7EB22E2AE030E025C0F0 -:10981000F22FF97FBF2E8F36C1F018F4883579F01A -:10982000ADC0803719F0883721F0A8C02F2F2061F4 -:10983000B22EB4FE0DC08B2D8460B82E09C024FF5B -:109840000AC09F2F9660B92E06C028E030E005C000 -:1098500020E130E002C020E132E0F801B7FE07C0AD -:1098600060817181828193810C5F1F4F06C060818E -:10987000718180E090E00E5F1F4FA4015DD3A82EA0 -:10988000A818FB2DFF77BF2EB6FE0BC02B2D2E7F09 -:10989000A51450F4B4FE0AC0B2FC08C02B2D2E7ED5 -:1098A00005C07A2C2B2D03C07A2C01C0752C24FF07 -:1098B0000DC0FE01EA0DF11D8081803311F4297E77 -:1098C00009C022FF06C07394739404C0822F867867 -:1098D00009F0739423FD12C020FF06C05A2C7314A4 -:1098E00018F4530C5718732C731460F4B70180E20A -:1098F00090E02C8729DD73942C85F6CF731410F437 -:10990000371801C0312C24FF11C0B70180E390E06B -:109910002C871ADD2C8522FF16C021FF03C088E5A5 -:1099200090E002C088E790E0B7010CC0822F8678F3 -:1099300051F021FD02C080E201C08BE227FD8DE2E3 -:10994000B70190E001DDA51430F4B70180E390E0A9 -:10995000FBDC5A94F8CFAA94F401EA0DF11D808142 -:10996000B70190E0F1DCA110F6CF332009F45DCE11 -:10997000B70180E290E0E8DC3A94F7CFF701868106 -:10998000978102C08FEF9FEF2C960FB6F894DEBF41 -:109990000FBECDBFDF91CF911F910F91FF90EF9040 -:1099A000DF90CF90BF90AF909F908F907F906F90FF -:1099B0005F904F903F902F900895DC01CB01FC0108 -:1099C000F999FECF06C0F2BDE1BDF89A319600B418 -:1099D0000D9241505040B8F70895F999FECF92BDCD -:1099E00081BDF89A992780B50895A6E1B0E044E0DA -:1099F00050E0E5CFA8E1B0E042E050E0E0CF262F14 -:109A0000F999FECF92BD81BDF89A019700B4021674 -:109A100039F01FBA20BD0FB6F894FA9AF99A0FBE22 -:109A200008950396272FECDFEADF252FE9DF242FA7 -:109A3000E7CF0196272FE4DFE2CF262FF999FECF5B -:109A40001FBA92BD81BD20BD0FB6F894FA9AF99A5B -:109A50000FBE01960895F1DF272FF0CF6F927F920E -:109A60009F92AF92BF92CF92DF92EF92FF920F93AD -:109A70001F93CF93DF93CDB7DEB729970FB6F89436 -:109A8000DEBF0FBECDBF6A01B22E102F0C3320F403 -:109A9000FF24F394F00E02C04CE3F42E0F2D27E0C8 -:109AA000AE014F5F5F4F57D17981272F2970213049 -:109AB00031F0E1FC06C0E0FC06C060E005C06DE2EC -:109AC00003C06BE201C060E2AE2DA07173FF36C02F -:109AD000662311F084E001C083E08B1510F4B81AFE -:109AE00001C0B12CA1110BC0F6018B2D90E288238F -:109AF00019F091938150FBCFCB0CD11CB12C662374 -:109B000031F0F601608396012F5F3F4F6901C60176 -:109B10000396E2FE05C02EE4F601208331E404C082 -:109B20002EE6F601208331E631832283FC012B2DC2 -:109B300030E22223F1F131932150FBCF72FF40C07C -:109B4000662311F084E001C083E08B1510F4B81A8D -:109B500001C0B12CA1110BC0F6018B2D90E288231E -:109B600019F091938150FBCFCB0CD11CB12C662303 -:109B700031F0F601608396012F5F3F4F6901C60106 -:109B80000396E2FE07C029E4F60120832EE4218338 -:109B900026E406C029E6F60120832EE6218326E688 -:109BA0002283FC012B2D30E2222319F03193215026 -:109BB000FBCFFC01EB0DF11D10828EEF9FEFB7C0C4 -:109BC000B1E0611101C0B0E04B2F50E0181619064A -:109BD00024F49C012F5F3F4F02C021E030E0240FAE -:109BE000351F112329F0412F50E04F5F5F4F02C016 -:109BF00040E050E0420F531F2B2D30E04217530737 -:109C000014F4B41A01C0B12C2E2D287159F4F601A8 -:109C10002B2D30E2222319F031932150FBCFCB0CB6 -:109C2000D11CB12CBB2331F0F601608396012F5F6C -:109C30003F4F6901A1110BC0F6012B2D30E3222308 -:109C400019F031932150FBCFCB0CD11CB12CF80E65 -:109C50000A81372F3071A32E74FF03C0013309F43A -:109C6000FA941F142CF42F2D293018F028E001C08D -:109C700021E0682F392F97FF02C060E030E0462FC7 -:109C8000532F612C712C3EE2932EBC01621B710993 -:109C90009B01DC01A41BB50BE1E0F0E0EC0FFD1F24 -:109CA000AE0FBF1FE12EF12CF194E194F1084F3F6C -:109CB000FFEF5F0731F4F6019082B6016F5F7F4FCF -:109CC0006B01841795074CF02417350734F4BD0158 -:109CD000660D771DFB01118101C010E34150510950 -:109CE000FFEF6F1A7F0AB6016F5F7F4F4E155F055A -:109CF00024F0F60110836B01DACF4817590739F4C5 -:109D0000063320F4053319F4A11001C011E3F60164 -:109D10001083FB018B2D90E2882319F091938150E1 -:109D2000FBCFFB01EB0DF11D108280E090E0299646 -:109D30000FB6F894DEBF0FBECDBFDF91CF911F915C -:109D40000F91FF90EF90DF90CF90BF90AF909F90DA -:109D50007F906F900895283008F027E03327DA01CC -:109D6000990F311D87FD916000966105710539F4E9 -:109D700032602E5F3D9330E32A95E1F708959F3FCF -:109D800030F080387105610509F03C5F3C5F3D9320 -:109D9000913008F08068911DDF93CF931F930F934C -:109DA000FF92EF92192F987F9695E92F96959695A9 -:109DB000E90FFF27E256FE4999273327EE24FF24B7 -:109DC000A701E70105900894079428F4360FE71ED1 -:109DD000F81E491F511D660F771F881F991F069493 -:109DE000A1F70590079428F4E70EF81E491F561FA7 -:109DF000C11D770F881F991F661F0694A1F7059054 -:109E0000079428F4F80E491F561FC71FD11D880F4D -:109E1000991F661F771F0694A1F70590079420F4F9 -:109E2000490F561FC71FD81F990F661F771F881F1E -:109E30000694A9F784911095177041F0D695C795AF -:109E400057954795F794E7941A95C1F7E4E4F1E63E -:109E500068941590159135916591959105907FE2E3 -:109E60007395E118F10A430B560BC90BD009C0F7E3 -:109E7000E10CF11E431F561FC91FD01D7EF4703325 -:109E800011F48A95E6CFE894015030F0080F0AF4F7 -:109E90000027021708F4202F2395022F7A3328F089 -:109EA00079E37D932A95E9F710C07D932A9589F689 -:109EB000069497956795379517951794E118F10AC9 -:109EC000430B560BC90BD00998F023957E917395DF -:109ED0007A3308F070E37C932013B8F77E917061B9 -:109EE0007D9330F0839571E37D9370E32A95E1F7DC -:109EF0001124EF90FF900F911F91CF91DF9199273F -:109F000087FD90950895992788270895FC0105906D -:109F1000615070400110D8F7809590958E0F9F1F6B -:109F20000895FC016150704001900110D8F78095B0 -:109F300090958E0F9F1F0895FA01AA27283051F19E -:109F4000203181F1E8946F936E7F6E5F7F4F8F4F6A -:109F50009F4FAF4FB1E03ED0B4E03CD0670F781FC9 -:109F6000891F9A1FA11D680F791F8A1F911DA11DAE -:109F70006A0F711D811D911DA11D20D009F46894E7 -:109F80003F912AE0269F11243019305D3193DEF68F -:109F9000CF010895462F4770405D4193B3E00FD045 -:109FA000C9F7F6CF462F4F70405D4A3318F0495D30 -:109FB00031FD4052419302D0A9F7EACFB4E0A69513 -:109FC0009795879577956795BA95C9F70097610535 -:109FD000710508959B01AC010A2E0694579547958B -:109FE00037952795BA95C9F7620F731F841F951F80 -:109FF000A01D089512E6C6E4D2E600E006C022974E -:10A000000109FE010BBF0F94AFC5C834D10780E032 -:08A010000807A9F7F894FFCF3F -:10A018000000FE1A80000101010160EA00000080D2 -:10A02800BB4402FFFFFFFF010001000000410000E8 -:10A038003442000050410000404000007F430000CF -:10A0480052430000524300000000000080C09A996B -:10A05800193E0000803F00004040640081018101FA -:10A068008101810164006400640000803B45008038 -:10A078003B45000048440000000001013002000098 -:10A088003E4301010101019001EE02EE029001EE52 -:10A0980002EE029001EE02EE02FF21B1151401FF5B -:10A0A8003FFF3FFF3F4C62B045E65A343F8F42FCCA -:10A0B800420000803FB099AB43FF08433E3D0A8110 -:10A0C8004101FF0303030303040303020201010226 -:10A0D80002E6EB0A0A140A0D1419230D1419232990 -:10A0E80027434201022E010100005243011E0001D4 -:10A0F80001FF0000C8420000C8420000C843000039 -:10A108000C44000048430000484300004041000060 -:10A11800F042E8030000E8030000C80000008813CC -:10A1280000000000400014005400001F1511151F06 -:10A1380000000C12120C00000000040A0A0A0A119E -:10A14800110E040E1F041C0000000006191803134A -:10A158000C00001C1F11111F00000004120912043A -:10A168000000000E1315110E000000000000001181 -:10A178000A041F1F1F1F1F1F1F1F0000110A0411A1 -:10A188000A046164635F696E697400442D31202D8F -:10A1980020456E646C657373206C6F6F7000504956 -:10A1A8004E25643D2564007265735F783D25642003 -:10A1B8007265735F793D256420783D256420793D7B -:10A1C800256420623D256420733D25640A00DD076F -:10A1D800D007C707BC07B307A6079D070000000004 -:10A1E8001443960163726173686465745F656E6198 -:10A1F800626C650063726173686465745F64697337 -:10A2080061626C65004D3834004D203834004D31A2 -:10A2180031370043524153485F4445544543544500 -:10A22800440043524153485F5245434F56455200FC -:10A2380043524153485F43414E43454C00505255A9 -:10A2480053410050696E670050524E0046414E001F -:10A2580045303A002052504D0050524E303A006678 -:10A268006E004E6F7420696E206661726D206D6F8E -:10A2780064652E006676004D323800534E003B531D -:10A288000046697200332E312E312D52433400526C -:10A29800657600315F37356D6D5F4D4B332D454920 -:10A2A8004E595F3034612D453344763666756C6C93 -:10A2B800004C616E67004C7A0053455249414C206E -:10A2C8004C4F570053455249414C20484947480094 -:10A2D800426561740046520050727573612069339B -:10A2E800204D4B330020703A0020693A0020643A30 -:10A2F8000020633A00746D63323133305F73675FF7 -:10A308007468725B585D3D00746D63323133305F41 -:10A3180073675F7468725B595D3D00746D633231B9 -:10A3280033305F73675F7468725B5A5D3D00746DAC -:10A3380063323133305F73675F7468725B455D3DCC -:10A3480000437261736844657465637420454E41C7 -:10A35800424C4544210043726173684465746563E7 -:10A36800742044495341424C45440058595A4500C9 -:10A37800000000B5B096012F004E6F74207072690E -:10A388006E74696E6700416E206572726F72207715 -:10A3980068696C652077726974696E6720746F20CC -:10A3A80074686520534420436172642E0053442D21 -:10A3B8005052494E54494E4720202020202020202A -:10A3C800200001006F70656E206661696C65642C01 -:10A3D8002046696C653A20004D3131320035FA8EDD -:10A3E8003B1F42093B504944204175746F74756E98 -:10A3F8006520737461727400504944204175746F0C -:10A4080074756E65206661696C65642E20426164AE -:10A41800206578747275646572206E756D626572F8 -:10A428002E00746D63323133305F7365745F7077FB -:10A438006D5F616D706C2000746D63323133305F15 -:10A448007365745F70776D5F6772616420004F4B4E -:10A45800005B50524E3A005B5354303A005D5B53F8 -:10A4680054423A005D5B4154303A005D5B415442CE -:10A478003A003E004C616E67756167650053746110 -:10A4880074697374696373005368697070696E677F -:10A49800207072657000416C6C20446174610046E4 -:10A4A80061696C7572652073746174732020202053 -:10A4B8002020200020506F776572206661696C75D6 -:10A4C8007265733A2020202000204372617368204F -:10A4D80064657465637465643A2020202000204612 -:10A4E800696C616D656E74206661696C733A2020D1 -:10A4F8002020007B5B4552523A345D007B5B45521D -:10A50800523A335D007B5B4552523A325D007B5BC9 -:10A518004552523A315D007B5B50524E3A355D00F0 -:10A528007B007B5B50524E3A305D5B50464E3A00A2 -:10A538007B5B50524E3A395D007B5B50524E3A3845 -:10A548005D007B5B5245533A305D007B5B5245535F -:10A558003A315D007B5B50524E3A39395D005B54AD -:10A5680046553A005D5B5043443A005D5B46454DB5 -:10A578003A005D5B464E4D3A005D5B54494D3A00EA -:10A588005D5B4657523A005D7D004661726D206EF4 -:10A598006F005E00206D6D0046696C2E2058643A8D -:10A5A8000059643A00496E743A2020202020202067 -:10A5B80020202020202000536875743A2020202075 -:10A5C800006D2000636D006820006B6D006800203E -:10A5D8002020202020202020202020202020202073 -:10A5E800202020005072696E74206F6B203F007C21 -:10A5F800002D2D2D2D2D2D2D2D2D2D2D2D2D2D2DB0 -:10A608002D2D2D2D2D00486F74656E6400426564F4 -:10A61800004731205837302059004731205900472A -:10A6280031205835302059004D333031205000202A -:10A6380049002044004731205A004D313039205319 -:10A64800004D313034205300473120580047312025 -:10A65800583530205933352045004D3330332045A7 -:10A668003020530025642F36002F3000457874724F -:10A678007564657220004C6F6164696E6720666955 -:10A688006C616D656E740000C0284500C0284500E7 -:10A69800007A440000C8426E616E00696E66006F01 -:04A6A80076660000D2 -:00000001FF From 4746c77195ee63995408cc487fe280814fa03c30 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Tue, 29 May 2018 21:03:47 +0200 Subject: [PATCH 58/68] New ML support - bootloader support and update proces test --- Firmware/Marlin_main.cpp | 32 ++++++++++++++++++++++++++++++++ Firmware/bootapp.c | 32 ++++++++++++++++++++++++++++++++ Firmware/bootapp.h | 36 ++++++++++++++++++++++++++++++++++++ Firmware/language.c | 2 ++ Firmware/language.h | 3 ++- 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 Firmware/bootapp.c create mode 100644 Firmware/bootapp.h diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 0f79a78d..30e5c0b6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -970,6 +970,35 @@ void erase_eeprom_section(uint16_t offset, uint16_t bytes) for (int i = offset; i < (offset+bytes); i++) eeprom_write_byte((uint8_t*)i, 0xFF); } +#include "bootapp.h" + +void __test() +{ + cli(); + boot_app_magic = 0x55aa55aa; + boot_app_flags = BOOT_APP_FLG_USER0; + boot_reserved = 0x00; + wdt_enable(WDTO_15MS); + while(1); +} + +void upgrade_sec_lang_from_external_flash() +{ + if ((boot_app_magic == 0x55aa55aa) && (boot_app_flags & BOOT_APP_FLG_USER0)) + { + fprintf_P(lcdout, PSTR(ESC_2J ESC_H(1,1) "TEST %d"), boot_reserved); + boot_reserved++; + if (boot_reserved < 4) + { + _delay_ms(1000); + cli(); + wdt_enable(WDTO_15MS); + while(1); + } + } + boot_app_flags &= ~BOOT_APP_FLG_USER0; +} + // "Setup" function is called by the Arduino framework on startup. // Before startup, the Timers-functions (PWM)/Analog RW and HardwareSerial provided by the Arduino-code // are initialized by the main() routine provided by the Arduino framework. @@ -977,6 +1006,9 @@ void setup() { lcd_init(); fdev_setup_stream(lcdout, lcd_putchar, NULL, _FDEV_SETUP_WRITE); //setup lcdout stream + +// upgrade_sec_lang_from_external_flash(); + lcd_splash(); setup_killpin(); setup_powerhold(); diff --git a/Firmware/bootapp.c b/Firmware/bootapp.c new file mode 100644 index 00000000..0f652921 --- /dev/null +++ b/Firmware/bootapp.c @@ -0,0 +1,32 @@ +//bootapp.c +#include "bootapp.h" +#include +#include +#include + + +/* +void bootapp_print_vars() +{ + printf_P(_n("boot_src_addr =0x%08lx\n"), boot_src_addr); + printf_P(_n("boot_dst_addr =0x%08lx\n"), boot_dst_addr); + printf_P(_n("boot_copy_size =0x%04x\n"), boot_copy_size); + printf_P(_n("boot_reserved =0x%02x\n"), boot_reserved); + printf_P(_n("boot_app_flags =0x%02x\n"), boot_app_flags); + printf_P(_n("boot_app_magic =0x%08lx\n"), boot_app_magic); +} +*/ + +void bootapp_ram2flash(uint16_t rptr, uint16_t fptr, uint16_t size) +{ + cli(); +// uint16_t ui; for (ui = 0; ui < size; ui++) +// ram_array[ui+rptr] = 0xff; + boot_app_magic = 0x55aa55aa; + boot_app_flags = BOOT_APP_FLG_ERASE | BOOT_APP_FLG_COPY; + boot_copy_size = (uint16_t)size; + boot_src_addr = (uint32_t)rptr; + boot_dst_addr = (uint32_t)fptr; + wdt_enable(WDTO_15MS); + while(1); +} diff --git a/Firmware/bootapp.h b/Firmware/bootapp.h new file mode 100644 index 00000000..dc0006e4 --- /dev/null +++ b/Firmware/bootapp.h @@ -0,0 +1,36 @@ +//language.h +#ifndef BOOTAPP_H +#define BOOTAPP_H + +#include "config.h" +#include + + +#define RAMSIZE 0x2000 +#define ram_array ((uint8_t*)(0)) +#define boot_src_addr (*((uint32_t*)(RAMSIZE - 16))) +#define boot_dst_addr (*((uint32_t*)(RAMSIZE - 12))) +#define boot_copy_size (*((uint16_t*)(RAMSIZE - 8))) +#define boot_reserved (*((uint8_t*)(RAMSIZE - 6))) +#define boot_app_flags (*((uint8_t*)(RAMSIZE - 5))) +#define boot_app_magic (*((uint32_t*)(RAMSIZE - 4))) +#define BOOT_APP_FLG_ERASE 0x01 +#define BOOT_APP_FLG_COPY 0x02 +#define BOOT_APP_FLG_FLASH 0x04 + +#define BOOT_APP_FLG_USER0 0x80 + + +#if defined(__cplusplus) +extern "C" { +#endif //defined(__cplusplus) + + +extern void bootapp_ram2flash(uint16_t rptr, uint16_t fptr, uint16_t size); + + +#if defined(__cplusplus) +} +#endif //defined(__cplusplus) + +#endif //BOOTAPP_H diff --git a/Firmware/language.c b/Firmware/language.c index c51fc60e..1e2f3024 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -2,6 +2,7 @@ #include "language.h" #include #include +#include "bootapp.h" // Currectly active language selection. @@ -93,3 +94,4 @@ const char* lang_get_name(unsigned char lang) } const char MSG_LANGUAGE_NAME[] PROGMEM_I1 = ISTR("English"); ////c=0 r=0 + diff --git a/Firmware/language.h b/Firmware/language.h index ec641334..b768bdb3 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -76,6 +76,7 @@ extern const char* lang_select(unsigned char lang); extern unsigned char lang_get_count(); extern const char* lang_get_name(unsigned char lang); + #if defined(__cplusplus) } #endif //defined(__cplusplus) @@ -88,5 +89,5 @@ extern const char MSG_LANGUAGE_NAME[]; #include "messages.h" -#endif //__LANGUAGE_H +#endif //LANGUAGE_H From 167bc61ef98bb5735bed41eef4a9692cfed4857a Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 30 May 2018 12:57:51 +0200 Subject: [PATCH 59/68] Fixed redefined warning --- Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 0f0356ed..cbf34cfa 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -209,11 +209,6 @@ #define TMC2130_PWM_AUTO_Y 1 // PWMCONF #define TMC2130_PWM_FREQ_Y 2 // PWMCONF -#define TMC2130_PWM_GRAD_E 2 // PWMCONF -#define TMC2130_PWM_AMPL_E 235 // PWMCONF -#define TMC2130_PWM_AUTO_E 1 // PWMCONF -#define TMC2130_PWM_FREQ_E 2 // PWMCONF - #define TMC2130_PWM_GRAD_Z 4 // PWMCONF #define TMC2130_PWM_AMPL_Z 200 // PWMCONF #define TMC2130_PWM_AUTO_Z 1 // PWMCONF From 2f9b63275f0081f97437a0bea760e2644e6c036a Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 30 May 2018 13:26:31 +0200 Subject: [PATCH 60/68] Fixed unused variable c as in pull request #138 --- Firmware/MarlinSerial.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/MarlinSerial.h b/Firmware/MarlinSerial.h index 5c2245df..615b7eb9 100644 --- a/Firmware/MarlinSerial.h +++ b/Firmware/MarlinSerial.h @@ -131,7 +131,7 @@ class MarlinSerial //: public Stream if (M_UCSRxA & (1< Date: Wed, 30 May 2018 13:35:48 +0200 Subject: [PATCH 61/68] Fixed forgotten comment --- Firmware/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 0f79a78d..34c55893 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1250,7 +1250,7 @@ void setup() } else printf_P(PSTR("Card NG!\n")); -#endif DEBUG_SD_SPEED_TEST +#endif //DEBUG_SD_SPEED_TEST if (eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_POWER_COUNT, 0); if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_X, 0); From d8706be8de7f78a27fbe6f51aa570dfc19fc471c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 30 May 2018 13:39:24 +0200 Subject: [PATCH 62/68] Fixed forgotten comment --- Firmware/cardreader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index 4d1367a9..073325e3 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -133,7 +133,7 @@ private: #ifdef DEBUG_SD_SPEED_TEST public: -#endif DEBUG_SD_SPEED_TEST +#endif //DEBUG_SD_SPEED_TEST Sd2Card card; private: From d27211a8a7059770bcf199ab542e7336bf3f579a Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 30 May 2018 13:41:55 +0200 Subject: [PATCH 63/68] New ML support - migration - fixed parsing and new data for german make_msgs.h - modified script for language_de.h language_de.h - fixed - "lenght" instead of "length" msgs_de.txt - new generated migration data lang_en_de.txt - new generated dictionary lang_de.po - new generated 'po' file --- lang/lang_en_de.txt | 418 +++++++++--------- lang/po/lang_de.po | 874 +------------------------------------- lang_backup/language_de.h | 2 +- lang_upgrade/make_msgs.sh | 20 +- lang_upgrade/msgs_de.txt | 229 ++++++++++ 5 files changed, 475 insertions(+), 1068 deletions(-) diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index 7a83b251..d5825db1 100644 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -4,43 +4,43 @@ #MSG_PLANNER_BUFFER_BYTES c=0 r=0 " PlannerBufferBytes: " -"\x00" +" PlannerBufferBytes: " #MSG_FACTOR c=0 r=0 " \002 Fact" -"\x00" +" \002 Fakt" #MSG_MAX c=0 r=0 " \002 Max" -"\x00" +" \002 Max" #MSG_MIN c=0 r=0 " \002 Min" -"\x00" +" \002 Min" #MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0 " cold extrusion prevented" -"\x00" +"Stopp, Extruder kalt!" #MSG_FREE_MEMORY c=0 r=0 " Free Memory: " -"\x00" +" Freier Speicher: " #MSG_CONFIGURATION_VER c=0 r=0 " Last Updated: " -"\x00" +" Letztes Update:" #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 " of 4" -"\x00" +" von 4" #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0 " of 4" -"\x00" +" von 4" #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0 " of 9" -"\x00" +" von 9" #MSG_MEASURED_OFFSET c=0 r=0 "[0;0] point offset" @@ -56,15 +56,15 @@ #MSG_REFRESH c=0 r=0 "\xf8Refresh" -"\x00" +"\xf8Erneuern" #MSG_BABYSTEPPING_Z c=20 r=0 "Adjusting Z" -"\x00" +"Z wurde eingestellt" #MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0 "All correct " -"\x00" +"Alles richtig " #MSG_WIZARD_DONE c=20 r=8 "All is done. Happy printing!" @@ -76,19 +76,19 @@ #MSG_PRESS c=20 r=0 "and press the knob" -"\x00" +"und Knopf druecken" #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 "Are left and right Z~carriages all up?" -"\x00" +"Ist der Schlitten ganz oben?" #MSG_ADJUSTZ c=0 r=0 "Auto adjust Z?" -"\x00" +"Auto Z einstellen?" #MSG_AUTO_HOME c=0 r=0 "Auto home" -"\x00" +"Startposition" #MSG_AUTOLOAD_FILAMENT c=17 r=0 "AutoLoad filament" @@ -112,47 +112,47 @@ #MSG_BABYSTEPPING_X c=0 r=0 "Babystepping X" -"\x00" +"Babystepping X" #MSG_BABYSTEPPING_Y c=0 r=0 "Babystepping Y" -"\x00" +"Babystepping Y" #MSG_SELFTEST_BEDHEATER c=0 r=0 "Bed / Heater" -"\x00" +"Bett / Heater" #MSG_BED_DONE c=0 r=0 "Bed done" -"\x00" +"Bett OK" #MSG_BED_HEATING c=0 r=0 "Bed Heating" -"\x00" +"Bett aufwaermen" #MSG_BED_CORRECTION_MENU c=0 r=0 "Bed level correct" -"\x00" +"Bett level Korrekt" #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." -"\x00" +"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset" #MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." -"\x00" +"Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset." #MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 "Bed leveling failed. Sensor triggered too high. Waiting for reset." -"\x00" +"Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset." #MSG_BED c=0 r=0 "Bed" -"\x00" +"Bett" #MSG_BEGIN_FILE_LIST c=0 r=0 "Begin file list" -"\x00" +"Beginn Dateiliste" #MSG_MENU_BELT_STATUS c=15 r=1 "Belt status" @@ -164,15 +164,15 @@ #MSG_CALIBRATE_E c=20 r=1 "Calibrate E" -"\x00" +"Kalibriere E" #MSG_CALIBRATE_BED c=0 r=0 "Calibrate XYZ" -"\x00" +"Kalibrierung XYZ" #MSG_HOMEYZ c=0 r=0 "Calibrate Z" -"\x00" +"Kalibrieren Z" #MSG_CALIBRATE_PINDA c=17 r=1 "Calibrate" @@ -180,51 +180,51 @@ #MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -"\x00" +"Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird." #MSG_HOMEYZ_PROGRESS c=0 r=0 "Calibrating Z" -"\x00" +"Kalibriere Z" #MSG_HOMEYZ_PROGRESS c=0 r=0 "Calibrating Z" -"\x00" +"Kalibriere Z" #MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -"\x00" +"Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird." #MSG_HOMEYZ_DONE c=0 r=0 "Calibration done" -"\x00" +"Kalibrierung OK" #MSG_MENU_CALIBRATION c=0 r=0 "Calibration" -"\x00" +"Kalibrierung" #MSG_SD_CANT_ENTER_SUBDIR c=0 r=0 "Cannot enter subdir: " -"\x00" +"Zugangsproblem Unterverzeichnis: " #MSG_SD_CANT_OPEN_SUBDIR c=0 r=0 "Cannot open subdir" -"\x00" +"Kann Unterverz. nicht oeffnen" #MSG_SD_INSERTED c=0 r=0 "Card inserted" -"\x00" +"SD eingesetzt" #MSG_SD_REMOVED c=0 r=0 "Card removed" -"\x00" +"SD entfernt " #MSG_NOT_COLOR c=0 r=0 "Color not correct" -"\x00" +"Farbe unklar" #MSG_COOLDOWN c=0 r=0 "Cooldown" -"\x00" +"Abkuehlen" #MSG_CRASHDETECT_ON c=0 r=0 "Crash det. [on]" @@ -252,11 +252,11 @@ #MSG_DISABLE_STEPPERS c=0 r=0 "Disable steppers" -"\x00" +"Motoren aus" #MSG_BABYSTEP_Z_NOT_SET c=20 r=12 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." -"\x00" +"Der Abstand zwischen der Spitze der Duese und der Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, section First layer calibration." #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 "Do you want to repeat last step to readjust distance between nozzle and heatbed?" @@ -264,7 +264,7 @@ #MSG_CLEAN_NOZZLE_E c=20 r=8 "E calibration finished. Please clean the nozzle. Click when done." -"\x00" +"E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig." #MSG_EXTRUDER_CORRECTION c=9 r=0 "E-correct" @@ -272,27 +272,31 @@ #MSG_END_FILE_LIST c=0 r=0 "End file list" -"\x00" +"Ende Dateiliste" #MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 "Endstop not hit" -"\x00" +"Ende nicht getrof." #MSG_SELFTEST_ENDSTOP c=0 r=0 "Endstop" -"\x00" +"Endstop" #MSG_ENDSTOPS_HIT c=0 r=0 "endstops hit: " -"\x00" +"Endanschlag erreicht" #MSG_SELFTEST_ENDSTOPS c=0 r=0 "Endstops" -"\x00" +"Endschalter" + +#MSG_LANGUAGE_NAME c=0 r=0 +"English" +"Deutsch" #MSG_Enqueing c=0 r=0 "enqueing \x22" -"\x00" +"enqueuing \x22 #MSG_STACK_ERROR c=20 r=4 "Error - static memory has been overwritten" @@ -300,7 +304,7 @@ #MSG_SD_ERR_WRITE_TO_FILE c=0 r=0 "error writing to file" -"\x00" +"Fehler beim Schreiben in Datei" #MSG_FSENS_NOT_RESPONDING c=20 r=4 "ERROR: Filament sensor is not responding, please check connection." @@ -308,7 +312,7 @@ #MSG_ERROR c=0 r=0 "ERROR:" -"\x00" +"FEHLER:" #MSG_EXTRUDER_1 c=17 r=1 "Extruder 1" @@ -336,11 +340,11 @@ #MSG_MOVE_E c=0 r=0 "Extruder" -"\x00" +"Extruder" #MSG_MOVE_E c=0 r=0 "Extruder" -"\x00" +"Extruder" #MSG_FSENS_AUTOLOAD_ON c=17 r=1 "F. autoload [on]" @@ -356,11 +360,11 @@ #MSG_FAN_SPEED c=14 r=0 "Fan speed" -"\x00" +"Luefter-Tempo" #MSG_SELFTEST_FAN c=20 r=0 "Fan test" -"\x00" +"Lueftertest" #MSG_FANS_CHECK_ON c=17 r=1 "Fans check [on]" @@ -384,11 +388,11 @@ #MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" -"\x00" +"Ist Farbe rein?" #MSG_NOT_LOADED c=19 r=0 "Filament not loaded" -"\x00" +"Fil. nicht geladen" #MSG_FILAMENT_SENSOR c=20 r=0 "Filament sensor" @@ -400,7 +404,7 @@ #MSG_STATS_FILAMENTUSED c=20 r=0 "Filament used: " -"\x00" +"Filamentverbrauch:" #MSG_FILE_INCOMPLETE c=20 r=2 "File incomplete. Continue anyway?" @@ -408,11 +412,11 @@ #MSG_SD_FILE_OPENED c=0 r=0 "File opened: " -"\x00" +"Datei geoeffnet: " #MSG_SD_FILE_SELECTED c=0 r=0 "File selected" -"\x00" +"Datei ausgewaehlt" #MSG_FINISHING_MOVEMENTS c=20 r=1 "Finishing movements" @@ -428,19 +432,19 @@ #MSG_FLOW c=0 r=0 "Flow" -"\x00" +"Durchfluss" #MSG_PRUSA3D_FORUM c=0 r=0 "forum.prusa3d.com" -"\x00" +"forum.prusa3d.com" #MSG_SELFTEST_COOLING_FAN c=20 r=0 "Front print fan?" -"\x00" +"Vorderer Luefter?" #MSG_BED_CORRECTION_FRONT c=14 r=1 "Front side[um]" -"\x00" +"Vorne [um]" #MSG_SELFTEST_FANS c=0 r=0 "Front/left fans" @@ -448,7 +452,7 @@ #MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0 "Heater/Thermistor" -"\x00" +"Heater/Thermistor" #MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0 "Heating disabled by safety timer." @@ -456,11 +460,11 @@ #MSG_HEATING_COMPLETE c=20 r=0 "Heating done." -"\x00" +"Aufwaermen OK" #MSG_HEATING c=0 r=0 "Heating" -"\x00" +"Aufwaermen" #MSG_WIZARD_WELCOME c=20 r=7 "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" @@ -468,43 +472,43 @@ #MSG_PRUSA3D_HOWTO c=0 r=0 "howto.prusa3d.com" -"\x00" +"howto.prusa3d.com" #MSG_CHANGE_EXTR c=20 r=1 "Change extruder" -"\x00" +"Wechsel extruder" #MSG_FILAMENTCHANGE c=0 r=0 "Change filament" -"\x00" +"Filament-Wechsel" #MSG_CNG_SDCARD c=0 r=0 "Change SD card" -"\x00" +"Wechsel SD Karte" #MSG_CHANGE_SUCCESS c=0 r=0 "Change success!" -"\x00" +"Wechsel erfolgr.!" #MSG_CORRECTLY c=20 r=0 "Changed correctly?" -"\x00" +"Wechsel ok?" #MSG_CHANGING_FILAMENT c=20 r=0 "Changing filament!" -"\x00" +"Filament-Wechsel!" #MSG_SELFTEST_CHECK_BED c=20 r=0 "Checking bed " -"\x00" +"Pruefe Bett " #MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0 "Checking endstops" -"\x00" +"Pruefe Endschalter " #MSG_SELFTEST_CHECK_HOTEND c=20 r=0 "Checking hotend " -"\x00" +"Pruefe Duese" #MSG_SELFTEST_CHECK_FSENSOR c=20 r=0 "Checking sensors " @@ -512,19 +516,19 @@ #MSG_SELFTEST_CHECK_X c=20 r=0 "Checking X axis " -"\x00" +"Pruefe X Achse " #MSG_SELFTEST_CHECK_Y c=20 r=0 "Checking Y axis " -"\x00" +"Pruefe Y Achse " #MSG_SELFTEST_CHECK_Z c=20 r=0 "Checking Z axis " -"\x00" +"Pruefe Z Achse " #MSG_ERR_CHECKSUM_MISMATCH c=0 r=0 "checksum mismatch, Last Line: " -"\x00" +"Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: " #MSG_CHOOSE_EXTRUDER c=20 r=1 "Choose extruder:" @@ -544,35 +548,35 @@ #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 "Improving bed calibration point" -"\x00" +"Verbesserung Bett Kalibrierpunkt" #MSG_WATCH c=0 r=0 "Info screen" -"\x00" +"Information" #MSG_INIT_SDCARD c=0 r=0 "Init. SD card" -"\x00" +"Init SD Karte" #MSG_FILAMENT_LOADING_T0 c=20 r=4 "Insert filament into extruder 1. Click when done." -"\x00" +"Filament in extruder 1 einlegen. Klicken wenn fertig." #MSG_FILAMENT_LOADING_T1 c=20 r=4 "Insert filament into extruder 2. Click when done." -"\x00" +"Filament in extruder 2 einlegen. Klicken wenn fertig." #MSG_FILAMENT_LOADING_T2 c=20 r=4 "Insert filament into extruder 3. Click when done." -"\x00" +"Filament in extruder 3 einlegen. Klicken wenn fertig." #MSG_FILAMENT_LOADING_T3 c=20 r=4 "Insert filament into extruder 4. Click when done." -"\x00" +"Filament in extruder 4 einlegen. Klicken wenn fertig." #MSG_INSERT_FILAMENT c=20 r=0 "Insert filament" -"\x00" +"Filament einlegen" #MSG_WIZARD_FILAMENT_LOADED c=20 r=2 "Is filament loaded?" @@ -596,15 +600,15 @@ #MSG_KILLED c=0 r=0 "KILLED. " -"\x00" +"ABGEBROCHEN. " #MSG_SELFTEST_EXTRUDER_FAN c=20 r=0 "Left hotend fan?" -"\x00" +"Linker Luefter?" #MSG_BED_CORRECTION_LEFT c=14 r=1 "Left side [um]" -"\x00" +"Links [um]" #MSG_LEFT c=12 r=1 "Left:" @@ -612,7 +616,7 @@ #MSG_BABYSTEP_Z c=0 r=0 "Live adjust Z" -"\x00" +"Z einstellen" #MSG_LOAD_ALL c=0 r=0 "Load all" @@ -636,31 +640,31 @@ #MSG_LOAD_FILAMENT c=17 r=0 "Load filament" -"\x00" +"Filament laden" #MSG_LOADING_COLOR c=0 r=0 "Loading color" -"\x00" +"Lade Farbe" #MSG_LOADING_FILAMENT c=20 r=0 "Loading filament" -"\x00" +"Filament leadt" #MSG_LOOSE_PULLEY c=20 r=1 "Loose pulley" -"\x00" +"Lose Riemenscheibe" #MSG_M104_INVALID_EXTRUDER c=0 r=0 "M104 Invalid extruder " -"\x00" +"M104 Falscher Extruder" #MSG_M105_INVALID_EXTRUDER c=0 r=0 "M105 Invalid extruder " -"\x00" +"M105 Falscher Extruder" #MSG_M109_INVALID_EXTRUDER c=0 r=0 "M109 Invalid extruder " -"\x00" +"M109 Falscher Extruder" #MSG_M117_V2_CALIBRATION c=25 r=1 "M117 First layer cal." @@ -668,23 +672,23 @@ #MSG_M200_INVALID_EXTRUDER c=0 r=0 "M200 Invalid extruder " -"\x00" +"M200 Falscher Extruder" #MSG_M218_INVALID_EXTRUDER c=0 r=0 "M218 Invalid extruder " -"\x00" +"M218 Falscher Extruder" #MSG_M221_INVALID_EXTRUDER c=0 r=0 "M221 Invalid extruder " -"\x00" +"M221 Falscher Extruder" #MSG_MAIN c=0 r=0 "Main" -"\x00" +"Hauptmenue" #MSG_MARK_FIL c=20 r=8 "Mark filament 100mm from extruder body. Click when done." -"\x00" +"Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig." #MSG_MEASURED_SKEW c=15 r=1 "Measured skew:" @@ -692,11 +696,11 @@ #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0 "Measuring reference height of calibration point" -"\x00" +"Messen der Referenzhoehe des Kalibrierpunktes" #MSG_MESH_BED_LEVELING c=0 r=0 "Mesh Bed Leveling" -"\x00" +"Mesh Bett Leveling" #MSG_STEALTH_MODE_OFF c=0 r=0 "Mode [Normal]" @@ -704,7 +708,7 @@ #MSG_SILENT_MODE_ON c=0 r=0 "Mode [silent]" -"\x00" +"Mode [leise]" #MSG_STEALTH_MODE_ON c=0 r=0 "Mode [Stealth]" @@ -716,59 +720,59 @@ #MSG_SILENT_MODE_OFF c=0 r=0 "Mode [high power]" -"\x00" +"Mode [Hohe Leist]" #MSG_SELFTEST_MOTOR c=0 r=0 "Motor" -"\x00" +"Motor" #MSG_MOVE_AXIS c=0 r=0 "Move axis" -"\x00" +"Achsbewegung" #MSG_MOVE_X c=0 r=0 "Move X" -"\x00" +"Bewege X" #MSG_MOVE_Y c=0 r=0 "Move Y" -"\x00" +"Bewege Y" #MSG_MOVE_Z c=0 r=0 "Move Z" -"\x00" +"Bewege Z" #MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 "New firmware version available:" -"\x00" +"Neue Firmware Version verfuegbar:" #MSG_ERR_NO_CHECKSUM c=0 r=0 "No Checksum with line number, Last Line: " -"\x00" +"Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: " #MSG_NO_MOVE c=0 r=0 "No move." -"\x00" +"Keine Bewegung." #MSG_NO_CARD c=0 r=0 "No SD card" -"\x00" +"Keine SD Karte" #MSG_ERR_NO_THERMISTORS c=0 r=0 "No thermistors - no temperature" -"\x00" +"Keine Thermistoren - keine Temperatur" #MSG_NO c=0 r=0 "No" -"\x00" +"Nein" #MSG_SELFTEST_NOTCONNECTED c=0 r=0 "Not connected" -"\x00" +"Nicht angeschlossen" #MSG_SELFTEST_FAN_NO c=19 r=0 "Not spinning" -"\x00" +"Dreht nicht" #MSG_WIZARD_V2_CAL c=20 r=8 "Now I will calibrate distance between tip of the nozzle and heatbed surface." @@ -784,19 +788,19 @@ #MSG_NOZZLE c=0 r=0 "Nozzle" -"\x00" +"Duese" #MSG_NOZZLE1 c=0 r=0 "Nozzle2" -"\x00" +"Duese2" #MSG_NOZZLE2 c=0 r=0 "Nozzle3" -"\x00" +"Duese3" #MSG_OK c=0 r=0 "ok" -"\x00" +"ok" #MSG_DEFAULT_SETTINGS_LOADED c=20 r=4 "Old settings found. Default PID, Esteps etc. will be set." @@ -804,23 +808,23 @@ #MSG_SD_OPEN_FILE_FAIL c=0 r=0 "open failed, File: " -"\x00" +"Fehler beim Oeffnen der Datei: " #MSG_ENDSTOP_OPEN c=0 r=0 "open" -"\x00" +"offen" #MSG_SD_OPENROOT_FAIL c=0 r=0 "openRoot failed" -"\x00" +"Zugriff auf Basisverzeichnis misslungen" #MSG_PAUSE_PRINT c=0 r=0 "Pause print" -"\x00" +"Druck unterbrech." #MSG_PICK_Z c=0 r=0 "Pick print" -"\x00" +"Waehle Abdruck" #MSG_PID_RUNNING c=20 r=1 "PID cal. " @@ -840,7 +844,7 @@ #MSG_PAPER c=20 r=8 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -"\x00" +"Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten" #MSG_WIZARD_CLEAN_HEATBED c=20 r=8 "Please clean heatbed and then press the knob." @@ -848,11 +852,11 @@ #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." -"\x00" +"Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." #MSG_SELFTEST_PLEASECHECK c=0 r=0 "Please check :" -"\x00" +"Bitte pruefe:" #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." @@ -892,23 +896,23 @@ #MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0 "Please upgrade." -"\x00" +"Bitte aktualisieren." #MSG_PLEASE_WAIT c=20 r=0 "Please wait" -"\x00" +"Bitte warten" #MSG_POWERUP c=0 r=0 "PowerUp" -"\x00" +"Einschalten" #MSG_PREHEAT_NOZZLE c=20 r=0 "Preheat the nozzle!" -"\x00" +"Duese Vorwaermen" #MSG_PREHEAT c=0 r=0 "Preheat" -"\x00" +"Vorwaermen" #MSG_WIZARD_HEATING c=20 r=3 "Preheating nozzle. Please wait." @@ -924,7 +928,7 @@ #MSG_PRINT_ABORTED c=20 r=0 "Print aborted" -"\x00" +"Druck abgebrochen" #MSG_INFO_PRINT_FAN c=11 r=1 "Print FAN: " @@ -936,7 +940,7 @@ #MSG_CARD_MENU c=0 r=0 "Print from SD" -"\x00" +"Drucken von SD" #MSG_PRINT_PAUSED c=20 r=1 "Print paused" @@ -944,7 +948,7 @@ #MSG_STATS_PRINTTIME c=20 r=0 "Print time: " -"\x00" +"Druckzeit: " #MSG_PRINTER_DISCONNECTED c=20 r=1 "Printer disconnected" @@ -952,27 +956,27 @@ #MSG_ERR_KILLED c=0 r=0 "Printer halted. kill() called!" -"\x00" +"Printer gestoppt. kill() aufgerufen!" #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." -"\x00" +"Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie das Handbuch, Kapitel First steps, Abschnitt Calibration flow." #MSG_ERR_STOPPED c=0 r=0 "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" -"\x00" +"Drucker aufgrund von Fehlern gestoppt. Fehler beheben und mit M999 neu starten. (Temperatur wird zurueckgesetzt. Nach dem Neustart neu einstellen!)" #WELCOME_MSG c=20 r=0 "Prusa i3 MK3 ready." -"\x00" +"Prusa i3 MK3 bereit." #MSG_PRUSA3D c=0 r=0 "prusa3d.com" -"\x00" +"prusa3d.com" #MSG_BED_CORRECTION_REAR c=14 r=1 "Rear side [um]" -"\x00" +"Hinten [um]" #MSG_RECOVERING_PRINT c=20 r=1 "Recovering print " @@ -980,35 +984,35 @@ #MSG_M119_REPORT c=0 r=0 "Reporting endstop status" -"\x00" +"Statusbericht Endanschlag" #MSG_RESEND c=0 r=0 "Resend: " -"\x00" +"Wiederholen: " #MSG_CALIBRATE_BED_RESET c=0 r=0 "Reset XYZ calibr." -"\x00" +"Reset XYZ Kalibr." #MSG_BED_CORRECTION_RESET c=0 r=0 "Reset" -"\x00" +"Ruecksetzen" #MSG_RESUME_PRINT c=0 r=0 "Resume print" -"\x00" +"Fortsetzen" #MSG_RESUMING c=0 r=0 "Resuming print" -"\x00" +"Druck fortgesetzt" #MSG_RESUMING c=0 r=0 "Resuming print" -"\x00" +"Druck fortgesetzt" #MSG_BED_CORRECTION_RIGHT c=14 r=1 "Right side[um]" -"\x00" +"Rechts [um]" #MSG_RIGHT c=12 r=1 "Right:" @@ -1016,7 +1020,7 @@ #MSG_E_CAL_KNOB c=20 r=8 "Rotate knob until mark reaches extruder body. Click when done." -"\x00" +"Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig." #MSG_SECOND_SERIAL_ON c=17 r=1 "RPi port [on]" @@ -1032,51 +1036,51 @@ #MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 "SD card [normal]" -"\x00" +"SD Karte [normal]" #MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 "SD card [FlshAir]" -"\x00" +"SD Karte [FlashAir]" #MSG_SD_CARD_OK c=0 r=0 "SD card ok" -"\x00" +"SD Karte ok" #MSG_SD_INIT_FAIL c=0 r=0 "SD init fail" -"\x00" +"SD Init fehlerhaft" #MSG_SD_PRINTING_BYTE c=0 r=0 "SD printing byte " -"\x00" +"SD printing byte " #MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0 "Searching bed calibration point" -"\x00" +"Suchen Bett Kalibrierpunkt" #MSG_LANGUAGE_SELECT c=0 r=0 "Select language" -"\x00" +"Waehle Sprache" #MSG_SELFTEST_OK c=0 r=0 "Self test OK" -"\x00" +"Selbsttest OK" #MSG_SELFTEST_START c=20 r=0 "Self test start " -"\x00" +"Selbsttest start " #MSG_SELFTEST c=0 r=0 "Selftest " -"\x00" +"Selbsttest " #MSG_SELFTEST_ERROR c=0 r=0 "Selftest error !" -"\x00" +"Selbtest Fehler!" #MSG_SELFTEST_FAILED c=20 r=0 "Selftest failed " -"\x00" +"Selbsttest misslung." #MSG_FORCE_SELFTEST c=20 r=8 "Selftest will be run to calibrate accurate sensorless rehoming." @@ -1088,7 +1092,7 @@ #MSG_SETTINGS c=0 r=0 "Settings" -"\x00" +"Einstellungen" #MSG_SEVERE_SKEW c=15 r=1 "Severe skew:" @@ -1096,11 +1100,11 @@ #MSG_SHOW_END_STOPS c=17 r=1 "Show end stops" -"\x00" +"Endschalter Stat." #MSG_DWELL c=0 r=0 "Sleep..." -"\x00" +"Einen Moment bitte." #MSG_SLIGHT_SKEW c=15 r=1 "Slight skew:" @@ -1128,11 +1132,11 @@ #MSG_SPEED c=0 r=0 "Speed" -"\x00" +"Geschwindigkeit" #MSG_SELFTEST_FAN_YES c=19 r=0 "Spinning" -"\x00" +"Dreht" #MSG_TEMP_CAL_WARNING c=20 r=4 "Stable ambient temperature 21-26C is needed a rigid stand is required." @@ -1140,23 +1144,23 @@ #MSG_STATISTICS c=0 r=0 "Statistics " -"\x00" +"Statistiken " #MSG_STEPPER_TOO_HIGH c=0 r=0 "Steprate too high: " -"\x00" +"Schrittrate zu hoch" #MSG_STOP_PRINT c=0 r=0 "Stop print" -"\x00" +"Druck abbrechen" #MSG_STOPPED c=0 r=0 "STOPPED. " -"\x00" +"GESTOPPT. " #MSG_SUPPORT c=0 r=0 "Support" -"\x00" +"Support" #MSG_SELFTEST_SWAPPED c=0 r=0 "Swapped" @@ -1192,7 +1196,7 @@ #MSG_TEMPERATURE c=0 r=0 "Temperature" -"\x00" +"Temperatur" #MSG_MENU_TEMPERATURES c=15 r=1 "Temperatures" @@ -1200,19 +1204,19 @@ #MSG_STATS_TOTALFILAMENT c=20 r=0 "Total filament :" -"\x00" +"Gesamtfilament:" #MSG_STATS_TOTALPRINTTIME c=20 r=0 "Total print time :" -"\x00" +"Totale Druckzeit:" #MSG_ENDSTOP_HIT c=0 r=0 "TRIGGERED" -"\x00" +"AUSGELOEST" #MSG_TUNE c=0 r=0 "Tune" -"\x00" +"Feineinstellung" #MSG_UNLOAD_ALL c=0 r=0 "Unload all" @@ -1236,11 +1240,11 @@ #MSG_UNLOAD_FILAMENT c=17 r=0 "Unload filament" -"\x00" +"Filament entladen" #MSG_UNLOADING_FILAMENT c=20 r=1 "Unloading filament" -"\x00" +"Filament auswerfen" #MSG_USED c=19 r=1 "Used during print" @@ -1252,15 +1256,15 @@ #MSG_SD_VOL_INIT_FAIL c=0 r=0 "volume.init failed" -"\x00" +"Dateisystem Init fehlerhaft" #MSG_USERWAIT c=0 r=0 "Wait for user..." -"\x00" +"Warte auf user..." #MSG_WAITING_TEMP c=20 r=3 "Waiting for nozzle and bed cooling" -"\x00" +"Warten auf Abkuehlung von Heater und Bett." #MSG_WAITING_TEMP_PINDA c=20 r=3 "Waiting for PINDA probe cooling" @@ -1288,7 +1292,7 @@ #MSG_SELFTEST_WIRINGERROR c=0 r=0 "Wiring error" -"\x00" +"Verdrahtungfehler" #MSG_WIZARD c=17 r=1 "Wizard" @@ -1296,11 +1300,11 @@ #MSG_SD_WORKDIR_FAIL c=0 r=0 "workDir open failed" -"\x00" +"Oeffnen Arbeitsverzeichnis misslungen" #MSG_SD_WRITE_TO_FILE c=0 r=0 "Writing to file: " -"\x00" +"Schreiben der Datei: " #MSG_XYZ_DETAILS c=19 r=1 "XYZ cal. details" @@ -1308,47 +1312,47 @@ #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 "XYZ calibration all right. Skew will be corrected automatically." -"\x00" +"XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert." #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -"\x00" +"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief." #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration compromised. Front calibration points not reachable." -"\x00" +"XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne." #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8 "XYZ calibration compromised. Left front calibration point not reachable." -"\x00" +"XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne." #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration compromised. Right front calibration point not reachable." -"\x00" +"XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne." #MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8 "XYZ calibration failed. Bed calibration point was not found." -"\x00" +"XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden." #MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration failed. Front calibration points not reachable." -"\x00" +"XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne." #MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8 "XYZ calibration failed. Left front calibration point not reachable." -"\x00" +"XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne." #MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 "XYZ calibration failed. Please consult the manual." -"\x00" +"XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." #MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration failed. Right front calibration point not reachable." -"\x00" +"XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne." #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -"\x00" +"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!" #MSG_Y_DISTANCE_FROM_MIN c=20 r=1 "Y distance from min:" @@ -1356,7 +1360,7 @@ #MSG_YES c=0 r=0 "Yes" -"\x00" +"Ja" #MSG_FW_VERSION_ALPHA c=20 r=8 "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." diff --git a/lang/po/lang_de.po b/lang/po/lang_de.po index 1f9b68e0..54acb30b 100644 --- a/lang/po/lang_de.po +++ b/lang/po/lang_de.po @@ -6,50 +6,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ultralcd.cpp:6304 +#: ultralcd.cpp:6312 msgid " [off" msgstr "" -#: Marlin_main.cpp:1053 -msgid " PlannerBufferBytes: " -msgstr "" - -#: ultralcd.cpp:6000 -msgid " \002 Fact" -msgstr "" - -#: ultralcd.cpp:5999 -msgid " \002 Max" -msgstr "" - -#: ultralcd.cpp:5998 -msgid " \002 Min" -msgstr "" - -#: planner.cpp:745 -msgid " cold extrusion prevented" -msgstr "" - -#: Marlin_main.cpp:1051 -msgid " Free Memory: " -msgstr "" - -#: Marlin_main.cpp:1041 -msgid " Last Updated: " -msgstr "" - -#: mesh_bed_calibration.cpp:2471 -msgid " of 4" -msgstr "" - -#: mesh_bed_calibration.cpp:2471 -msgid " of 4" -msgstr "" - -#: messages.c:59 -msgid " of 9" -msgstr "" - #: ultralcd.cpp:2362 msgid "[0;0] point offset" msgstr "" @@ -62,35 +22,7 @@ msgstr "" msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" msgstr "" -#: -msgid "\xf8Refresh" -msgstr "" - -#: ultralcd.cpp:2487 -msgid "Adjusting Z" -msgstr "" - -#: ultralcd.cpp:7227 -msgid "All correct " -msgstr "" - -#: ultralcd.cpp:1916 -msgid "and press the knob" -msgstr "" - -#: ultralcd.cpp:2803 -msgid "Are left and right Z~carriages all up?" -msgstr "" - -#: ultralcd.cpp:2600 -msgid "Auto adjust Z?" -msgstr "" - -#: messages.c:12 -msgid "Auto home" -msgstr "" - -#: ultralcd.cpp:5796 +#: ultralcd.cpp:5803 msgid "AutoLoad filament" msgstr "" @@ -102,58 +34,14 @@ msgstr "" msgid "Autoloading filament is active, just press the knob and insert filament..." msgstr "" -#: ultralcd.cpp:6999 +#: ultralcd.cpp:7007 msgid "Axis length" msgstr "" -#: ultralcd.cpp:7001 +#: ultralcd.cpp:7009 msgid "Axis" msgstr "" -#: ultralcd.cpp:2481 -msgid "Babystepping X" -msgstr "" - -#: ultralcd.cpp:2484 -msgid "Babystepping Y" -msgstr "" - -#: ultralcd.cpp:6943 -msgid "Bed / Heater" -msgstr "" - -#: messages.c:17 -msgid "Bed done" -msgstr "" - -#: messages.c:18 -msgid "Bed Heating" -msgstr "" - -#: ultralcd.cpp:4533 -msgid "Bed level correct" -msgstr "" - -#: messages.c:19 -msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." -msgstr "" - -#: Marlin_main.cpp:3989 -msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." -msgstr "" - -#: Marlin_main.cpp:3993 -msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset." -msgstr "" - -#: messages.c:16 -msgid "Bed" -msgstr "" - -#: Marlin_main.cpp:4363 -msgid "Begin file list" -msgstr "" - #: ultralcd.cpp:1738 msgid "Belt status" msgstr "" @@ -162,66 +50,6 @@ msgstr "" msgid "Blackout occurred. Recover print?" msgstr "" -#: ultralcd.cpp:4526 -msgid "Calibrate E" -msgstr "" - -#: ultralcd.cpp:4522 -msgid "Calibrate XYZ" -msgstr "" - -#: messages.c:52 -msgid "Calibrate Z" -msgstr "" - -#: ultralcd.cpp:2756 -msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -msgstr "" - -#: messages.c:21 -msgid "Calibrating Z" -msgstr "" - -#: messages.c:21 -msgid "Calibrating Z" -msgstr "" - -#: ultralcd.cpp:2756 -msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -msgstr "" - -#: ultralcd_implementation_hitachi_HD44780.h:989 -msgid "Calibration done" -msgstr "" - -#: messages.c:60 -msgid "Calibration" -msgstr "" - -#: cardreader.cpp:679 -msgid "Cannot enter subdir: " -msgstr "" - -#: cardreader.cpp:97 -msgid "Cannot open subdir" -msgstr "" - -#: ultralcd.cpp:7542 -msgid "Card inserted" -msgstr "" - -#: ultralcd.cpp:7548 -msgid "Card removed" -msgstr "" - -#: ultralcd.cpp:2018 -msgid "Color not correct" -msgstr "" - -#: messages.c:24 -msgid "Cooldown" -msgstr "" - #: messages.c:28 msgid "Crash det. [on]" msgstr "" @@ -238,63 +66,19 @@ msgstr "" msgid "Crash detected." msgstr "" -#: ultralcd.cpp:4146 -msgid "Disable steppers" -msgstr "" - -#: messages.c:15 -msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." -msgstr "" - -#: ultralcd.cpp:3890 -msgid "E calibration finished. Please clean the nozzle. Click when done." -msgstr "" - #: ultralcd.cpp:4213 msgid "E-correct" msgstr "" -#: Marlin_main.cpp:4365 -msgid "End file list" -msgstr "" - -#: ultralcd.cpp:6967 -msgid "Endstop not hit" -msgstr "" - -#: ultralcd.cpp:6961 -msgid "Endstop" -msgstr "" - -#: messages.c:31 -msgid "endstops hit: " -msgstr "" - -#: ultralcd.cpp:6949 -msgid "Endstops" -msgstr "" - -#: -msgid "enqueing \x22" -msgstr "" - -#: ultralcd.cpp:5835 +#: ultralcd.cpp:5843 msgid "Error - static memory has been overwritten" msgstr "" -#: messages.c:75 -msgid "error writing to file" -msgstr "" - #: ultralcd.cpp:3656 msgid "ERROR: Filament sensor is not responding, please check connection." msgstr "" -#: messages.c:34 -msgid "ERROR:" -msgstr "" - -#: ultralcd.cpp:7236 +#: ultralcd.cpp:7244 msgid "Extruder fan:" msgstr "" @@ -302,14 +86,6 @@ msgstr "" msgid "Extruder info" msgstr "" -#: messages.c:35 -msgid "Extruder" -msgstr "" - -#: messages.c:35 -msgid "Extruder" -msgstr "" - #: ultralcd.cpp:4178 msgid "F. autoload [on]" msgstr "" @@ -322,14 +98,6 @@ msgstr "" msgid "F. autoload [off]" msgstr "" -#: messages.c:36 -msgid "Fan speed" -msgstr "" - -#: messages.c:81 -msgid "Fan test" -msgstr "" - #: ultralcd.cpp:4189 msgid "Fans check [on]" msgstr "" @@ -350,250 +118,38 @@ msgstr "" msgid "Fil. sensor [off]" msgstr "" -#: messages.c:37 -msgid "Filament extruding & with correct color?" -msgstr "" - -#: ultralcd.cpp:2014 -msgid "Filament not loaded" -msgstr "" - -#: ultralcd.cpp:7015 +#: ultralcd.cpp:7023 msgid "Filament sensor" msgstr "" -#: ultralcd.cpp:7245 +#: ultralcd.cpp:7253 msgid "Filament sensor:" msgstr "" -#: ultralcd.cpp:2142 -msgid "Filament used: " -msgstr "" - -#: ultralcd.cpp:7388 +#: ultralcd.cpp:7396 msgid "File incomplete. Continue anyway?" msgstr "" -#: cardreader.cpp:395 -msgid "File opened: " -msgstr "" - -#: cardreader.cpp:401 -msgid "File selected" -msgstr "" - -#: ultralcd.cpp:5924 -msgid "Flow" -msgstr "" - -#: ultralcd.cpp:1821 -msgid "forum.prusa3d.com" -msgstr "" - -#: messages.c:78 -msgid "Front print fan?" -msgstr "" - -#: ultralcd.cpp:2565 -msgid "Front side[um]" -msgstr "" - -#: ultralcd.cpp:7007 +#: ultralcd.cpp:7015 msgid "Front/left fans" msgstr "" -#: ultralcd.cpp:6937 -msgid "Heater/Thermistor" -msgstr "" - -#: Marlin_main.cpp:7190 +#: Marlin_main.cpp:7222 msgid "Heating disabled by safety timer." msgstr "" -#: messages.c:51 -msgid "Heating done." -msgstr "" - -#: messages.c:50 -msgid "Heating" -msgstr "" - -#: ultralcd.cpp:1822 -msgid "howto.prusa3d.com" -msgstr "" - -#: ultralcd.cpp:5805 -msgid "Change extruder" -msgstr "" - -#: messages.c:42 -msgid "Change filament" -msgstr "" - -#: ultralcd.cpp:5770 -msgid "Change SD card" -msgstr "" - -#: ultralcd.cpp:1927 -msgid "Change success!" -msgstr "" - -#: ultralcd.cpp:2006 -msgid "Changed correctly?" -msgstr "" - -#: ultralcd.cpp:1899 -msgid "Changing filament!" -msgstr "" - -#: messages.c:84 -msgid "Checking bed " -msgstr "" - -#: ultralcd.cpp:7218 -msgid "Checking endstops" -msgstr "" - -#: ultralcd.cpp:7219 -msgid "Checking hotend " -msgstr "" - #: messages.c:85 msgid "Checking sensors " msgstr "" -#: ultralcd.cpp:7220 -msgid "Checking X axis " -msgstr "" - -#: ultralcd.cpp:7221 -msgid "Checking Y axis " -msgstr "" - -#: ultralcd.cpp:7222 -msgid "Checking Z axis " -msgstr "" - -#: cmdqueue.cpp:444 -msgid "checksum mismatch, Last Line: " -msgstr "" - -#: mesh_bed_calibration.cpp:2458 -msgid "Improving bed calibration point" -msgstr "" - -#: messages.c:100 -msgid "Info screen" -msgstr "" - -#: ultralcd.cpp:5778 -msgid "Init. SD card" -msgstr "" - -#: messages.c:38 -msgid "Insert filament into extruder 1. Click when done." -msgstr "" - -#: messages.c:39 -msgid "Insert filament into extruder 2. Click when done." -msgstr "" - -#: messages.c:40 -msgid "Insert filament into extruder 3. Click when done." -msgstr "" - -#: messages.c:41 -msgid "Insert filament into extruder 4. Click when done." -msgstr "" - -#: ultralcd.cpp:1913 -msgid "Insert filament" -msgstr "" - #: messages.c:93 msgid "Is steel sheet on heatbed?" msgstr "" -#: Marlin_main.cpp:7351 -msgid "KILLED. " -msgstr "" - -#: messages.c:79 -msgid "Left hotend fan?" -msgstr "" - -#: ultralcd.cpp:2563 -msgid "Left side [um]" -msgstr "" - -#: messages.c:14 -msgid "Live adjust Z" -msgstr "" - -#: messages.c:54 -msgid "Load filament" -msgstr "" - -#: ultralcd.cpp:1939 -msgid "Loading color" -msgstr "" - -#: messages.c:55 -msgid "Loading filament" -msgstr "" - -#: ultralcd.cpp:6991 -msgid "Loose pulley" -msgstr "" - -#: Marlin_main.cpp:7464 -msgid "M104 Invalid extruder " -msgstr "" - -#: Marlin_main.cpp:7467 -msgid "M105 Invalid extruder " -msgstr "" - -#: Marlin_main.cpp:7470 -msgid "M109 Invalid extruder " -msgstr "" - -#: Marlin_main.cpp:5336 -msgid "M200 Invalid extruder " -msgstr "" - -#: Marlin_main.cpp:7473 -msgid "M218 Invalid extruder " -msgstr "" - -#: Marlin_main.cpp:7476 -msgid "M221 Invalid extruder " -msgstr "" - -#: messages.c:57 -msgid "Main" -msgstr "" - -#: ultralcd.cpp:3840 -msgid "Mark filament 100mm from extruder body. Click when done." -msgstr "" - -#: messages.c:58 -msgid "Measuring reference height of calibration point" -msgstr "" - -#: ultralcd.cpp:4528 -msgid "Mesh Bed Leveling" -msgstr "" - #: messages.c:91 msgid "Mode [Normal]" msgstr "" -#: messages.c:90 -msgid "Mode [silent]" -msgstr "" - #: messages.c:92 msgid "Mode [Stealth]" msgstr "" @@ -602,119 +158,15 @@ msgstr "" msgid "Mode [auto power]" msgstr "" -#: messages.c:89 -msgid "Mode [high power]" -msgstr "" - -#: messages.c:86 -msgid "Motor" -msgstr "" - -#: ultralcd.cpp:4142 -msgid "Move axis" -msgstr "" - -#: ultralcd.cpp:3557 -msgid "Move X" -msgstr "" - -#: ultralcd.cpp:3558 -msgid "Move Y" -msgstr "" - -#: ultralcd.cpp:3559 -msgid "Move Z" -msgstr "" - -#: util.cpp:292 -msgid "New firmware version available:" -msgstr "" - -#: cmdqueue.cpp:456 -msgid "No Checksum with line number, Last Line: " -msgstr "" - -#: Marlin_main.cpp:4352 -msgid "No move." -msgstr "" - -#: ultralcd.cpp:5776 -msgid "No SD card" -msgstr "" - -#: Marlin_main.cpp:4904 -msgid "No thermistors - no temperature" -msgstr "" - -#: messages.c:61 -msgid "No" -msgstr "" - -#: ultralcd.cpp:6939 -msgid "Not connected" -msgstr "" - -#: messages.c:82 -msgid "Not spinning" -msgstr "" - #: ultralcd.cpp:1537 msgid "Nozzle FAN:" msgstr "" -#: messages.c:62 -msgid "Nozzle" -msgstr "" - -#: ultralcd.cpp:5987 -msgid "Nozzle2" -msgstr "" - -#: ultralcd.cpp:5990 -msgid "Nozzle3" -msgstr "" - -#: messages.c:63 -msgid "ok" -msgstr "" - -#: Marlin_main.cpp:1364 +#: Marlin_main.cpp:1396 msgid "Old settings found. Default PID, Esteps etc. will be set." msgstr "" -#: cardreader.cpp:461 -msgid "open failed, File: " -msgstr "" - -#: messages.c:30 -msgid "open" -msgstr "" - -#: cardreader.cpp:196 -msgid "openRoot failed" -msgstr "" - -#: ultralcd.cpp:5750 -msgid "Pause print" -msgstr "" - -#: ultralcd.cpp:3463 -msgid "Pick print" -msgstr "" - -#: messages.c:64 -msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -msgstr "" - -#: messages.c:23 -msgid "Please clean the nozzle for calibration. Click when done." -msgstr "" - -#: ultralcd.cpp:6931 -msgid "Please check :" -msgstr "" - -#: Marlin_main.cpp:6124 +#: Marlin_main.cpp:6156 msgid "Please open idler and remove filament manually." msgstr "" @@ -734,118 +186,26 @@ msgstr "" msgid "Please remove steel sheet from heatbed." msgstr "" -#: util.cpp:296 -msgid "Please upgrade." -msgstr "" - -#: messages.c:66 -msgid "Please wait" -msgstr "" - -#: messages.c:67 -msgid "PowerUp" -msgstr "" - -#: messages.c:68 -msgid "Preheat the nozzle!" -msgstr "" - -#: ultralcd.cpp:5739 -msgid "Preheat" -msgstr "" - -#: Marlin_main.cpp:5983 +#: Marlin_main.cpp:6015 msgid "Press knob to preheat nozzle and continue." msgstr "" -#: messages.c:70 -msgid "Print aborted" -msgstr "" - #: ultralcd.cpp:1549 msgid "Print FAN: " msgstr "" -#: ultralcd.cpp:7239 +#: ultralcd.cpp:7247 msgid "Print fan:" msgstr "" -#: messages.c:22 -msgid "Print from SD" -msgstr "" - -#: ultralcd.cpp:2151 -msgid "Print time: " -msgstr "" - #: ultralcd.cpp:607 msgid "Printer disconnected" msgstr "" -#: Marlin_main.cpp:7346 -msgid "Printer halted. kill() called!" -msgstr "" - -#: messages.c:46 -msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." -msgstr "" - -#: messages.c:33 -msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" -msgstr "" - -#: -msgid "Prusa i3 MK3 ready." -msgstr "" - -#: ultralcd.cpp:1820 -msgid "prusa3d.com" -msgstr "" - -#: ultralcd.cpp:2566 -msgid "Rear side [um]" -msgstr "" - -#: Marlin_main.cpp:8247 +#: Marlin_main.cpp:8279 msgid "Recovering print " msgstr "" -#: Marlin_main.cpp:5255 -msgid "Reporting endstop status" -msgstr "" - -#: Marlin_main.cpp:6869 -msgid "Resend: " -msgstr "" - -#: ultralcd.cpp:4539 -msgid "Reset XYZ calibr." -msgstr "" - -#: ultralcd.cpp:2567 -msgid "Reset" -msgstr "" - -#: ultralcd.cpp:5754 -msgid "Resume print" -msgstr "" - -#: Marlin_main.cpp:4345 -msgid "Resuming print" -msgstr "" - -#: Marlin_main.cpp:4345 -msgid "Resuming print" -msgstr "" - -#: ultralcd.cpp:2564 -msgid "Right side[um]" -msgstr "" - -#: ultralcd.cpp:3835 -msgid "Rotate knob until mark reaches extruder body. Click when done." -msgstr "" - #: ultralcd.cpp:4227 msgid "RPi port [on]" msgstr "" @@ -854,70 +214,10 @@ msgstr "" msgid "RPi port [off]" msgstr "" -#: ultralcd.cpp:4240 -msgid "SD card [normal]" -msgstr "" - -#: ultralcd.cpp:4238 -msgid "SD card [FlshAir]" -msgstr "" - -#: cardreader.cpp:202 -msgid "SD card ok" -msgstr "" - -#: cardreader.cpp:186 -msgid "SD init fail" -msgstr "" - -#: cardreader.cpp:516 -msgid "SD printing byte " -msgstr "" - -#: messages.c:43 -msgid "Searching bed calibration point" -msgstr "" - -#: ultralcd.cpp:4235 -msgid "Select language" -msgstr "" - -#: ultralcd.cpp:6497 -msgid "Self test OK" -msgstr "" - -#: ultralcd.cpp:6334 -msgid "Self test start " -msgstr "" - -#: ultralcd.cpp:4515 -msgid "Selftest " -msgstr "" - -#: ultralcd.cpp:6929 -msgid "Selftest error !" -msgstr "" - -#: messages.c:80 -msgid "Selftest failed " -msgstr "" - -#: Marlin_main.cpp:1396 +#: Marlin_main.cpp:1428 msgid "Selftest will be run to calibrate accurate sensorless rehoming." msgstr "" -#: messages.c:88 -msgid "Settings" -msgstr "" - -#: ultralcd.cpp:4536 -msgid "Show end stops" -msgstr "" - -#: Marlin_main.cpp:2974 -msgid "Sleep..." -msgstr "" - #: cardreader.cpp:754 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." msgstr "" @@ -938,39 +238,11 @@ msgstr "" msgid "Sorting files" msgstr "" -#: ultralcd.cpp:5918 -msgid "Speed" -msgstr "" - -#: messages.c:83 -msgid "Spinning" -msgstr "" - -#: Marlin_main.cpp:3504 +#: Marlin_main.cpp:3536 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." msgstr "" -#: ultralcd.cpp:5817 -msgid "Statistics " -msgstr "" - -#: stepper.cpp:345 -msgid "Steprate too high: " -msgstr "" - -#: messages.c:94 -msgid "Stop print" -msgstr "" - -#: messages.c:95 -msgid "STOPPED. " -msgstr "" - -#: ultralcd.cpp:5824 -msgid "Support" -msgstr "" - -#: ultralcd.cpp:7009 +#: ultralcd.cpp:7017 msgid "Swapped" msgstr "" @@ -978,67 +250,27 @@ msgstr "" msgid "Temperature calibration failed" msgstr "" -#: ultralcd.cpp:4139 -msgid "Temperature" -msgstr "" - #: ultralcd.cpp:1846 msgid "Temperatures" msgstr "" -#: ultralcd.cpp:2186 -msgid "Total filament :" -msgstr "" - -#: ultralcd.cpp:2203 -msgid "Total print time :" -msgstr "" - -#: messages.c:29 -msgid "TRIGGERED" -msgstr "" - -#: ultralcd.cpp:5736 -msgid "Tune" -msgstr "" - -#: messages.c:98 -msgid "Unload filament" -msgstr "" - -#: messages.c:99 -msgid "Unloading filament" -msgstr "" - #: ultralcd.cpp:1849 msgid "Voltages" msgstr "" -#: cardreader.cpp:191 -msgid "volume.init failed" -msgstr "" - -#: Marlin_main.cpp:4317 -msgid "Wait for user..." -msgstr "" - -#: ultralcd.cpp:2719 -msgid "Waiting for nozzle and bed cooling" -msgstr "" - #: ultralcd.cpp:2683 msgid "Waiting for PINDA probe cooling" msgstr "" -#: Marlin_main.cpp:1356 +#: Marlin_main.cpp:1388 msgid "Warning: both printer type and motherboard type changed." msgstr "" -#: Marlin_main.cpp:1348 +#: Marlin_main.cpp:1380 msgid "Warning: motherboard type changed." msgstr "" -#: Marlin_main.cpp:1352 +#: Marlin_main.cpp:1384 msgid "Warning: printer type changed." msgstr "" @@ -1046,70 +278,10 @@ msgstr "" msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!" msgstr "" -#: Marlin_main.cpp:6123 +#: Marlin_main.cpp:6155 msgid "Was filament unload successful?" msgstr "" -#: messages.c:87 -msgid "Wiring error" -msgstr "" - -#: messages.c:77 -msgid "workDir open failed" -msgstr "" - -#: cardreader.cpp:424 -msgid "Writing to file: " -msgstr "" - -#: ultralcd.cpp:3159 -msgid "XYZ calibration all right. Skew will be corrected automatically." -msgstr "" - -#: ultralcd.cpp:3156 -msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -msgstr "" - -#: ultralcd.cpp:3137 -msgid "XYZ calibration compromised. Front calibration points not reachable." -msgstr "" - -#: ultralcd.cpp:3143 -msgid "XYZ calibration compromised. Left front calibration point not reachable." -msgstr "" - -#: ultralcd.cpp:3140 -msgid "XYZ calibration compromised. Right front calibration point not reachable." -msgstr "" - -#: ultralcd.cpp:3119 -msgid "XYZ calibration failed. Bed calibration point was not found." -msgstr "" - -#: ultralcd.cpp:3125 -msgid "XYZ calibration failed. Front calibration points not reachable." -msgstr "" - -#: ultralcd.cpp:3131 -msgid "XYZ calibration failed. Left front calibration point not reachable." -msgstr "" - -#: messages.c:20 -msgid "XYZ calibration failed. Please consult the manual." -msgstr "" - -#: ultralcd.cpp:3128 -msgid "XYZ calibration failed. Right front calibration point not reachable." -msgstr "" - -#: ultralcd.cpp:3153 -msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -msgstr "" - -#: messages.c:105 -msgid "Yes" -msgstr "" - #: Marlin_main.cpp:930 msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage." msgstr "" diff --git a/lang_backup/language_de.h b/lang_backup/language_de.h index 3881489b..b65cd4a6 100644 --- a/lang_backup/language_de.h +++ b/lang_backup/language_de.h @@ -260,7 +260,7 @@ + #define(length = 20, lines = 3) MSG_WAITING_TEMP "Warten auf Abkuehlung von Heater und Bett." + #define(length = 20, lines = 2) MSG_FILAMENT_CLEAN "Ist Farbe rein?" -+ #define(lenght = 20, lines = 1) MSG_UNLOADING_FILAMENT "Filament auswerfen" ++ #define(length = 20, lines = 1) MSG_UNLOADING_FILAMENT "Filament auswerfen" + #define(length = 20, lines = 8) MSG_PAPER "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten" + +#define MSG_BED_CORRECTION_MENU "Bett level Korrekt" diff --git a/lang_upgrade/make_msgs.sh b/lang_upgrade/make_msgs.sh index b6260dc9..e8505db7 100644 --- a/lang_upgrade/make_msgs.sh +++ b/lang_upgrade/make_msgs.sh @@ -69,25 +69,27 @@ process_language_xx() { echo -n " processing language_$1.h ..." | tee -a make_msgs.out #list all defines from language_cz.h - cat "../Firmware/language_$1.h" | grep "^#define" >"msgs_$1.txt_0" - cat "msgs_$1.txt_0" | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" | sort >"msgs_$1.txt" + cat "../lang_backup/language_$1.h" | sed "s/[ \t]*\+//;s/^\+ #/#/;s/^\+#/#/" | grep -E "^#define" >"msgs_$1.txt_0" + cat "msgs_$1.txt_0" | sed "s/(length = [0-9]*)//" | sed "s/(length = [0-9]*, lines = [0-9]*)//" > "msgs_$1.txt_1" + cat "msgs_$1.txt_1" | sed -E "s/^#define[ \t]*([^ \t]*)[ \t]*([^ \t]*[ \t]*\"[^\"]*\"*)/\1 \2/g" | sort >"msgs_$1.txt" #calculate msgcount msgcount=$(grep -c '' "msgs_$1.txt") #calculate charcount charcount=$(calc_charcount "msgs_$1.txt" 2) #remove tmp files rm "msgs_$1.txt_0" + rm "msgs_$1.txt_1" echo "ok ($msgcount messages, $charcount characters)" | tee -a make_msgs.out } -process_language_common -process_language_en -process_language_xx cz +#process_language_common +#process_language_en +#process_language_xx cz process_language_xx de -process_language_xx it -process_language_xx pl -process_language_xx es +#process_language_xx it +#process_language_xx pl +#process_language_xx es -echo "step1 finished... press key" +echo "make_msgs.sh finished... press key" read diff --git a/lang_upgrade/msgs_de.txt b/lang_upgrade/msgs_de.txt index 7c42edb6..9909135a 100644 --- a/lang_upgrade/msgs_de.txt +++ b/lang_upgrade/msgs_de.txt @@ -1,49 +1,276 @@ +MSG_ADJUSTZ "Auto Z einstellen?" MSG_ALL "Alle" +MSG_AUTO_HOME "Startposition" +MSG_BABYSTEP_X "Babystep X" +MSG_BABYSTEP_Y "Babystep Y" +MSG_BABYSTEP_Z "Z einstellen" +MSG_BABYSTEP_Z_NOT_SET "Der Abstand zwischen der Spitze der Duese und der Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, section First layer calibration." +MSG_BABYSTEPPING_X "Babystepping X" +MSG_BABYSTEPPING_Y "Babystepping Y" +MSG_BABYSTEPPING_Z "Z wurde eingestellt" +MSG_BED "Bett" +MSG_BED_CORRECTION_FRONT "Vorne [um]" +MSG_BED_CORRECTION_LEFT "Links [um]" +MSG_BED_CORRECTION_MENU "Bett level Korrekt" +MSG_BED_CORRECTION_REAR "Hinten [um]" +MSG_BED_CORRECTION_RESET "Ruecksetzen" +MSG_BED_CORRECTION_RIGHT "Rechts [um]" +MSG_BED_DONE "Bett OK" +MSG_BED_HEATING "Bett aufwaermen" +MSG_BED_LEVELING_FAILED_POINT_HIGH "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset." +MSG_BED_LEVELING_FAILED_POINT_LOW "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset" +MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne." +MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne." +MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." +MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!" +MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert." +MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne." +MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne." +MSG_BEGIN_FILE_LIST "Beginn Dateiliste" +MSG_CALIBRATE_BED "Kalibrierung XYZ" +MSG_CALIBRATE_BED_RESET "Reset XYZ Kalibr." +MSG_CALIBRATE_E "Kalibriere E" MSG_CALIBRATE_PINDA "Kalibrieren" MSG_CALIBRATION_PINDA_MENU "Temp. kalibrieren" +MSG_CARD_MENU "Drucken von SD" +MSG_CLEAN_NOZZLE_E "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig." +MSG_CNG_SDCARD "Wechsel SD Karte" +MSG_CONFIGURATION_VER " Letztes Update:" +MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Ist der Schlitten ganz oben?" +MSG_CONFIRM_NOZZLE_CLEAN "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." +MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig." +MSG_CONTROL "Kontrolle" +MSG_COOLDOWN "Abkuehlen" +MSG_CORRECTLY "Wechsel ok?" MSG_CURRENT "Aktuelles" MSG_DATE "Datum" +MSG_DISABLE_STEPPERS "Motoren aus" +MSG_DWELL "Einen Moment bitte." +MSG_E_CAL_KNOB "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig." +MSG_END_FILE_LIST "Ende Dateiliste" +MSG_ENDSTOP_HIT "AUSGELOEST" +MSG_ENDSTOP_OPEN "offen" +MSG_ENDSTOPS_HIT "Endanschlag erreicht" +MSG_Enqueing "enqueuing \" +MSG_ERR_COLD_EXTRUDE_STOP "Stopp, Extruder kalt!" +MSG_ERR_CHECKSUM_MISMATCH "Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: " +MSG_ERR_KILLED "Printer gestoppt. kill() aufgerufen!" +MSG_ERR_NO_CHECKSUM "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: " +MSG_ERR_NO_THERMISTORS "Keine Thermistoren - keine Temperatur" +MSG_ERR_STOPPED "Drucker aufgrund von Fehlern gestoppt. Fehler beheben und mit M999 neu starten. (Temperatur wird zurueckgesetzt. Nach dem Neustart neu einstellen!)" +MSG_ERROR "FEHLER:" MSG_EXTRUDER "Extruder" MSG_EXTRUDER_1 "Extruder 1" MSG_EXTRUDER_2 "Extruder 2" MSG_EXTRUDER_3 "Extruder 3" MSG_EXTRUDER_4 "Extruder 4" +MSG_FACTOR " \002 Fakt" +MSG_FAN_SPEED "Luefter-Tempo" +MSG_FIL_ADJUSTING "Filament positionieren. Bitte warten." +MSG_FILAMENT_CLEAN "Ist Farbe rein?" +MSG_FILAMENT_LOADING_T0 "Filament in extruder 1 einlegen. Klicken wenn fertig." +MSG_FILAMENT_LOADING_T1 "Filament in extruder 2 einlegen. Klicken wenn fertig." +MSG_FILAMENT_LOADING_T2 "Filament in extruder 3 einlegen. Klicken wenn fertig." +MSG_FILAMENT_LOADING_T3 "Filament in extruder 4 einlegen. Klicken wenn fertig." +MSG_FILAMENTCHANGE "Filament-Wechsel" MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteration " +MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Suchen Bett Kalibrierpunkt" +MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " von 4" MSG_FINISHING_MOVEMENTS "Bewegung beenden" +MSG_FLOW "Durchfluss" +MSG_FLOW0 "Durchfluss 0" +MSG_FLOW1 "Durchfluss 1" +MSG_FLOW2 "Durchfluss 2" +MSG_FOLLOW_CALIBRATION_FLOW "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie das Handbuch, Kapitel First steps, Abschnitt Calibration flow." +MSG_FREE_MEMORY " Freier Speicher: " +MSG_HEATING "Aufwaermen" +MSG_HEATING_COMPLETE "Aufwaermen OK" +MSG_HOMEYZ "Kalibrieren Z" +MSG_HOMEYZ_DONE "Kalibrierung OK" +MSG_HOMEYZ_PROGRESS "Kalibriere Z" +MSG_CHANGE_EXTR "Wechsel extruder" +MSG_CHANGE_SUCCESS "Wechsel erfolgr.!" +MSG_CHANGING_FILAMENT "Filament-Wechsel!" MSG_CHOOSE_EXTRUDER "Waehlen Sie Extruder" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Verbesserung Bett Kalibrierpunkt" +MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " von 4" +MSG_INIT_SDCARD "Init SD Karte" +MSG_INSERT_FILAMENT "Filament einlegen" +MSG_KILLED "ABGEBROCHEN. " +MSG_LANGUAGE_NAME "Deutsch" +MSG_LANGUAGE_SELECT "Waehle Sprache" MSG_LEFT "Links:" MSG_LOAD_ALL "Alle laden" +MSG_LOAD_EPROM "Lade Speicher" +MSG_LOAD_FILAMENT "Filament laden" MSG_LOAD_FILAMENT_1 "Filament 1 laden" MSG_LOAD_FILAMENT_2 "Filament 2 laden" MSG_LOAD_FILAMENT_3 "Filament 3 laden" MSG_LOAD_FILAMENT_4 "Filament 4 laden" +MSG_LOADING_COLOR "Lade Farbe" +MSG_LOADING_FILAMENT "Filament leadt" +MSG_LOOSE_PULLEY "Lose Riemenscheibe" +MSG_M104_INVALID_EXTRUDER "M104 Falscher Extruder" +MSG_M105_INVALID_EXTRUDER "M105 Falscher Extruder" +MSG_M109_INVALID_EXTRUDER "M109 Falscher Extruder" MSG_M117_V2_CALIBRATION "M117 Erste-Schicht Kal." +MSG_M119_REPORT "Statusbericht Endanschlag" +MSG_M200_INVALID_EXTRUDER "M200 Falscher Extruder" +MSG_M218_INVALID_EXTRUDER "M218 Falscher Extruder" +MSG_M221_INVALID_EXTRUDER "M221 Falscher Extruder" +MSG_MAIN "Hauptmenue" +MSG_MARK_FIL "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig." +MSG_MAX " \002 Max" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Messen der Referenzhoehe des Kalibrierpunktes" +MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " von 9" MSG_MEASURED_SKEW "Schraeglauf:" +MSG_MENU_CALIBRATION "Kalibrierung" +MSG_MESH_BED_LEVELING "Mesh Bett Leveling" +MSG_MIN " \002 Min" +MSG_MOTION "Bewegung" +MSG_MOVE_AXIS "Achsbewegung" +MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird." +MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird." +MSG_MOVE_E "Extruder" +MSG_MOVE_X "Bewege X" +MSG_MOVE_Y "Bewege Y" +MSG_MOVE_Z "Bewege Z" +MSG_NEW_FIRMWARE_AVAILABLE "Neue Firmware Version verfuegbar:" +MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Bitte aktualisieren." +MSG_NO "Nein" +MSG_NO_CARD "Keine SD Karte" +MSG_NO_MOVE "Keine Bewegung." +MSG_NOT_COLOR "Farbe unklar" +MSG_NOT_LOADED "Fil. nicht geladen" +MSG_NOZZLE "Duese" +MSG_NOZZLE1 "Duese2" +MSG_NOZZLE2 "Duese3" +MSG_OK "ok" +MSG_PAPER "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten" +MSG_PAUSE_PRINT "Druck unterbrech." +MSG_PICK_Z "Waehle Abdruck" MSG_PID_EXTRUDER "PID Kalibrierung" MSG_PID_FINISHED "PID Kalib. fertig" MSG_PID_RUNNING "PID Kalib." MSG_PINDA_NOT_CALIBRATED "Temperatur wurde nicht kalibriert" MSG_PINDA_PREHEAT "PINDA erwaermen" MSG_PLA_FILAMENT_LOADED "Ist PLA Filament geladen?" +MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " MSG_PLEASE_LOAD_PLA "Bitte laden Sie zuerst PLA Filament." +MSG_PLEASE_WAIT "Bitte warten" +MSG_POWERUP "Einschalten" +MSG_PREHEAT "Vorwaermen" +MSG_PREHEAT_NOZZLE "Duese Vorwaermen" MSG_PREPARE_FILAMENT "Filam. bereithalten" +MSG_PRESS "und Knopf druecken" +MSG_PRINT_ABORTED "Druck abgebrochen" MSG_PRINT_PAUSED "Druck pausiert" +MSG_PRUSA3D "prusa3d.com" +MSG_PRUSA3D_FORUM "forum.prusa3d.com" +MSG_PRUSA3D_HOWTO "howto.prusa3d.com" +MSG_REBOOT "Zum Uebernehmen " +MSG_RECTRACT "Retract" +MSG_REFRESH "\xF8" "Erneuern" +MSG_RESEND "Wiederholen: " +MSG_RESTORE_FAILSAFE "Standardwerte setzen" +MSG_RESUME_PRINT "Fortsetzen" +MSG_RESUMING "Druck fortgesetzt" MSG_RESUMING_PRINT "Druck weitergehen" MSG_RIGHT "Rechts:" +MSG_SD_CANT_ENTER_SUBDIR "Zugangsproblem Unterverzeichnis: " +MSG_SD_CANT_OPEN_SUBDIR "Kann Unterverz. nicht oeffnen" +MSG_SD_CARD_OK "SD Karte ok" +MSG_SD_ERR_WRITE_TO_FILE "Fehler beim Schreiben in Datei" +MSG_SD_FILE_OPENED "Datei geoeffnet: " +MSG_SD_FILE_SELECTED "Datei ausgewaehlt" +MSG_SD_INIT_FAIL "SD Init fehlerhaft" +MSG_SD_INSERTED "SD eingesetzt" +MSG_SD_NOT_PRINTING "Kein SD Print" +MSG_SD_OPEN_FILE_FAIL "Fehler beim Oeffnen der Datei: " +MSG_SD_OPENROOT_FAIL "Zugriff auf Basisverzeichnis misslungen" +MSG_SD_PRINTING_BYTE "SD printing byte " +MSG_SD_REMOVED "SD entfernt " +MSG_SD_VOL_INIT_FAIL "Dateisystem Init fehlerhaft" +MSG_SD_WORKDIR_FAIL "Oeffnen Arbeitsverzeichnis misslungen" +MSG_SD_WRITE_TO_FILE "Schreiben der Datei: " +MSG_SELFTEST "Selbsttest " +MSG_SELFTEST_BEDHEATER "Bett / Heater" +MSG_SELFTEST_COOLING_FAN "Vorderer Luefter?" +MSG_SELFTEST_ENDSTOP "Endstop" +MSG_SELFTEST_ENDSTOP_NOTHIT "Ende nicht getrof." +MSG_SELFTEST_ENDSTOPS "Endschalter" +MSG_SELFTEST_ERROR "Selbtest Fehler!" +MSG_SELFTEST_EXTRUDER_FAN "Linker Luefter?" +MSG_SELFTEST_FAILED "Selbsttest misslung." +MSG_SELFTEST_FAN "Lueftertest" +MSG_SELFTEST_FAN_NO "Dreht nicht" +MSG_SELFTEST_FAN_YES "Dreht" +MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" +MSG_SELFTEST_CHECK_ALLCORRECT "Alles richtig " +MSG_SELFTEST_CHECK_BED "Pruefe Bett " +MSG_SELFTEST_CHECK_ENDSTOPS "Pruefe Endschalter " +MSG_SELFTEST_CHECK_HOTEND "Pruefe Duese" +MSG_SELFTEST_CHECK_X "Pruefe X Achse " +MSG_SELFTEST_CHECK_Y "Pruefe Y Achse " +MSG_SELFTEST_CHECK_Z "Pruefe Z Achse " +MSG_SELFTEST_MOTOR "Motor" +MSG_SELFTEST_NOTCONNECTED "Nicht angeschlossen" +MSG_SELFTEST_OK "Selbsttest OK" +MSG_SELFTEST_PLEASECHECK "Bitte pruefe:" +MSG_SELFTEST_START "Selbsttest start " +MSG_SELFTEST_WIRINGERROR "Verdrahtungfehler" +MSG_SERIAL_ERROR_MENU_STRUCTURE "Menuestruktur fehlerhaft" +MSG_SET_HOME_OFFSETS "Abstand vom Ursprung einstellen" +MSG_SET_ORIGIN "Ursprung einstellen" MSG_SET_TEMPERATURE "Temp. einsetzen" +MSG_SETTINGS "Einstellungen" MSG_SEVERE_SKEW "Schwerer Schr.:" +MSG_SHOW_END_STOPS "Endschalter Stat." +MSG_SILENT_MODE_OFF "Mode [Hohe Leist]" +MSG_SILENT_MODE_ON "Mode [leise]" MSG_SLIGHT_SKEW "Leichter Schr.:" +MSG_SPEED "Geschwindigkeit" +MSG_STATISTICS "Statistiken " +MSG_STATS_FILAMENTUSED "Filamentverbrauch:" +MSG_STATS_PRINTTIME "Druckzeit: " +MSG_STATS_TOTALFILAMENT "Gesamtfilament:" +MSG_STATS_TOTALPRINTTIME "Totale Druckzeit:" +MSG_STEPPER_TOO_HIGH "Schrittrate zu hoch" +MSG_STOP_PRINT "Druck abbrechen" +MSG_STOPPED "GESTOPPT. " +MSG_STORE_EPROM "Abspeichern" +MSG_SUPPORT "Support" +MSG_SWITCH_PS_OFF "Netzteil AUS" +MSG_SWITCH_PS_ON "Netzteil EIN" +MSG_TAKE_EFFECT "Drucker neu starten" MSG_TEMP_CALIBRATION "Temp Kalib. " MSG_TEMP_CALIBRATION_DONE "Temp. Kalibrierung fertig. Klicken um weiter zu gehen." MSG_TEMP_CALIBRATION_OFF "Temp. Kal. [OFF]" MSG_TEMP_CALIBRATION_ON "Temp. Kal. [ON]" +MSG_TEMPERATURE "Temperatur" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD Karte [normal]" +MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD Karte [FlashAir]" +MSG_TUNE "Feineinstellung" MSG_UNLOAD_ALL "Alles entladen" +MSG_UNLOAD_FILAMENT "Filament entladen" MSG_UNLOAD_FILAMENT_1 "Filam. 1 entladen" MSG_UNLOAD_FILAMENT_2 "Filam. 2 entladen" MSG_UNLOAD_FILAMENT_3 "Filam. 3 entladen" MSG_UNLOAD_FILAMENT_4 "Filam. 4 entladen" +MSG_UNLOADING_FILAMENT "Filament auswerfen" +MSG_USB_PRINTING "Drucken ueber USB" MSG_USED "Beim Druck benutzte" +MSG_USERWAIT "Warte auf user..." MSG_V2_CALIBRATION "Erste-Schicht Kal" +MSG_VOLUMETRIC "Filament" +MSG_VOLUMETRIC_ENABLED "E in mm3" +MSG_WAITING_TEMP "Warten auf Abkuehlung von Heater und Bett." +MSG_WATCH "Information" MSG_WIZARD "Wizard" MSG_WIZARD_CALIBRATION_FAILED "Bitte ueberpruefen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten." MSG_WIZARD_CLEAN_HEATBED "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." @@ -65,3 +292,5 @@ MSG_WIZARD_XYZ_CAL "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird c MSG_WIZARD_Z_CAL "Ich werde jetzt die Z Kalibrierung durchfuehren." MSG_XYZ_DETAILS "XYZ Kal. Details" MSG_Y_DISTANCE_FROM_MIN "Y Entfernung vom min" +MSG_YES "Ja" +WELCOME_MSG CUSTOM_MENDEL_NAME " bereit." From 3e29312b414f7961e1c45651a333f465fcb73d16 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 30 May 2018 14:53:14 +0200 Subject: [PATCH 64/68] fixed compilation (c++11) --- Firmware/language.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/language.h b/Firmware/language.h index b768bdb3..fdd76e06 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -35,7 +35,7 @@ #define _T(s) s #else //(LANG_MODE == 0) #define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff"s; &__c[0];})) -#define ISTR(s) "\xff\xff"s +#define ISTR(s) "\xff\xff" s #define _i(s) lang_get_translation(_I(s)) #define _T(s) lang_get_translation(s) #endif //(LANG_MODE == 0) From 72a382b34d694511c7e0a37d38deff065fff6e91 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 30 May 2018 15:07:24 +0200 Subject: [PATCH 65/68] fix in macro definition --- Firmware/language.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/language.h b/Firmware/language.h index fdd76e06..0e1e3151 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -34,7 +34,7 @@ #define _i(s) _I(s) #define _T(s) s #else //(LANG_MODE == 0) -#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff"s; &__c[0];})) +#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];})) #define ISTR(s) "\xff\xff" s #define _i(s) lang_get_translation(_I(s)) #define _T(s) lang_get_translation(s) From 3bf47d7f835f151e84f2415939e518dffbe5092e Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 30 May 2018 15:29:59 +0200 Subject: [PATCH 66/68] "run xyz cal first" message --- Firmware/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 779c543b..0c3265be 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3549,7 +3549,7 @@ void process_commands() if (calibration_status() >= CALIBRATION_STATUS_XYZ_CALIBRATION) { //we need to know accurate position of first calibration point //if xyz calibration was not performed yet, interrupt temperature calibration and inform user that xyz cal. is needed - //lcd_show_fullscreen_message_and_wait_P(); //add message here + lcd_show_fullscreen_message_and_wait_P(_i("Please run XYZ calibration first.")); break; } From eeca0f683b73bbafae77e28096e0ff481a03cec7 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 30 May 2018 16:06:22 +0200 Subject: [PATCH 67/68] Fixed warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] --- Firmware/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 2fdd7b07..249157c8 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1034,7 +1034,7 @@ void setup() stdout = uartout; SERIAL_PROTOCOLLNPGM("start"); SERIAL_ECHO_START; - printf_P(PSTR(" "FW_VERSION_FULL"\n")); + printf_P(PSTR(" " FW_VERSION_FULL "\n")); #if 0 SERIAL_ECHOLN("Reading eeprom from 0 to 100: start"); From 731fef3d32e383a79fb4f420bcbf45e2b8f2f8ea Mon Sep 17 00:00:00 2001 From: tarikku Date: Wed, 30 May 2018 23:15:01 +0200 Subject: [PATCH 68/68] Fix remaining forgotten comments --- Firmware/tmc2130.cpp | 2 +- Firmware/ultralcd.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/tmc2130.cpp b/Firmware/tmc2130.cpp index 27558b6a..01ee8fa2 100644 --- a/Firmware/tmc2130.cpp +++ b/Firmware/tmc2130.cpp @@ -419,7 +419,7 @@ void tmc2130_check_overtemp() lcd.print(' '); } } -#endif DEBUG_CRASHDET_COUNTERS +#endif //DEBUG_CRASHDET_COUNTERS } void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_t current_r) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e6acdf55..c829813f 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6808,7 +6808,7 @@ static bool lcd_selfcheck_pulleys(int axis) } return(true); } -#endif TMC2130 +#endif //TMC2130 static bool lcd_selfcheck_endstops()